2016-09-13 50 views
1

所以我有一個字符串,我用strip_tags()函數刪除除IMG以外的所有標籤,但我的IMG元素旁邊仍有純文本。這裏的可視化例子如何在使用strip_tags()後刪除字符串中的純文本()

$myvariable = "This text needs to be removed<a href='blah_blah_blah'>Blah</a><img src='blah.jpg'>" 

因此,使用PHP strip_tags()我能夠去除除了<img>標記的所有標記(這是我想要的)。但現在的事情是它並沒有刪除文本。

如何刪除左邊的文字?文本將始終要麼標籤之前或之後,標籤以及

[加入更多的詳情]

$description = 'crazy stuff<a href="https://websta.me/p/1337373806024694030_327078936"><img src="https://scontent.cdninstagram.com/t51.2885-15/e15/14287934_1389514537744146_673363238_n.jpg?ig_cache_key=MTMzNzM3MzgwNjAyNDY5NDAzMA%3D%3D.2"></a>'; 

這就是該變量實際持有。

由於提前

+0

正則表達式。但需要知道更多有關可能的字符串 – nogad

+0

看看我剛​​添加的變量。在此先感謝 – Carlitos

回答

1

而不是替換的東西可以很好地提取所需的值:

(<(\w+).+</\2>) 

要與preg_match()使用,見a demo on regex101.com
IN PHP

<?php 
$regex = '~(<(\w+).+</\2>)~'; 
$string = 'crazy stuff<a href="https://websta.me/p/1337373806024694030_327078936"><img src="https://scontent.cdninstagram.com/t51.2885-15/e15/14287934_1389514537744146_673363238_n.jpg?ig_cache_key=MTMzNzM3MzgwNjAyNDY5NDAzMA%3D%3D.2"></a>here as well'; 

if (preg_match($regex, $string, $match)) { 
    echo $match[1]; 
} 
?> 
+0

如果我只想要img標籤部分怎麼辦? – Carlitos

+0

然後您可以使用解析器或[**'(] +>)'**](https://regex101.com/r/mO9gM6/2) – Jan

0

請出示你的整個的代碼與使用strip_tags

你可以試試:preg_replace('~.*(<img[^>]+>)~', '$1', $myvariable);

+0

檢查我剛添加的變量。在此先感謝 – Carlitos

+0

如果您使用上面的preg_replace,您將只保留img標籤,是不是你想要的? – antoni

相關問題