我想从字符串中删除特定图片。
我需要删除具有特定宽度和高度的图像。
我试过这个,但这会删除第一张图片。
$description = preg_replace('/<img.*?>/', '123', $description, 1);
我想删除任何/所有具有特定宽度和高度的图像
例如。删除此图片<img width="1" height="1" ..../>
答案 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);