我有一个字符串$content
,其中包含:
<p>Some random text <img class="alignnone" src="logo.png" alt="" width="1920" height="648"></p>
现在我要删除图片代码:
<img class="alignnone" src="logo.png" alt="" width="1920" height="648">
我尝试了strip_tags
,但这已不再适用了。
$content = strip_tags($content, '<img></img>');
答案 0 :(得分:1)
这是一个完整的工作示例。
<?php
$content = "<p>Some random text <img class=\"alignnone\" src=\"logo.png\" alt=\"\" width=\"1920\" height=\"648\"></p>";
echo strip_tags($content,"<p>");
?>
答案 1 :(得分:0)
如果<p></p>
是您唯一拥有的其他代码,则可以使用strip_tags
这样的代码:
$content = strip_tags($content, '<p></p>');
如果您想要保留其他标记,只需将它们添加到strip_tags
的第二个参数
您还可以使用字符串函数的组合来实现此目的:
$count = substr_count($c, '<img ');
while($count >= 1){
$i = strpos($c, '<img ');
$j = strpos($c, '>',$i)+1;
$c = substr($c, 0,$i) . substr($c,$j);
$count--;
}
echo $c;
这也需要处理多个<img>
代码
答案 2 :(得分:-1)
您可以使用strpos() - 函数搜索img-Tags: http://www.w3schools.com/php/func_string_strpos.asp
一旦知道了字符串中的开始和结束位置,就可以使用substr() - 函数访问所需的部分: http://php.net/manual/de/function.substr.php
在你的例子中:
$left = strpos($content,'<img');
//$left should now be "20"
//to find the closing >-tag you need the string starting from <img... so you assign that to $rest:
$rest = substr($content,(strlen($content)-$left+1)*(-1));
$right = strpos($rest,">")+$left;
//now you know where the img ends so you can get the string surrounding it with:
$surr = substr($content,0,$left).substr($content,(strlen($content)-$right)*(-1));
编辑:经过测试,可用于删除第一个img-Tag