从字符串中删除特定图像

时间:2015-01-08 11:32:38

标签: php html string preg-replace

我想从字符串中删除特定图片。

我需要删除具有特定宽度和高度的图像。

我试过这个,但这会删除第一张图片。

$description = preg_replace('/<img.*?>/', '123', $description, 1); 

我想删除任何/所有具有特定宽度和高度的图像 例如。删除此图片<img width="1" height="1" ..../>

3 个答案:

答案 0 :(得分:0)

为你做了一个例子

<?php

$string = 'something something <img src="test.jpg" width="10" height="10" /> and something .. and <img src="test.jpg" width="10" height="10" /> and more and more and more';
preg_match_all('~<img(.+?)width="10"(.+?)height="10"(.+?)/>~is', $string, $return);

foreach ($return[0] as $image) {
    $string = str_replace($image, '', $string);
}

echo $string;

答案 1 :(得分:0)

我建议您不要使用正则表达式来解析(或操纵)HTML,因为它不是一个好主意,and here's a great SO answer on why

例如,通过使用彼得的方法(preg_match_all('~<img src="(.+?)" width="(.+?)">~is', $content, $return);),您假设所有图片都以<img开头,后跟src,然后包含width=,所有类型都完全类似,并且具有那些确切的空格分隔,以及那些特定的引号。这意味着您不会捕获任何要删除的完全有效的HTML图像:

<img src='asd' width="123"> <img src="asd" width="123"> <img src="asd" class='abc' width="123"> <img src="asd" width = "123">

虽然当然完全有可能抓住所有这些案例,但你真的想要经历所有这些努力吗?当您可以使用已有的工具解析HTML时,为什么要重新发明轮子。看看this other question

答案 2 :(得分:0)

我得到了解决方案:

$description = preg_replace('!<img.*?width="1".*?/>!i', '', $description);