从字符串中删除特定图像
Remove specific image from a string
我想从字符串中删除特定图像。
我需要删除具有特定宽度和高度的图像。
我试过了,但这会删除第一张图片。
$description = preg_replace('/<img.*?>/', '123', $description, 1);
我想删除 any/all 个具有特定宽度和高度的图像。
例如。删除此图片 <img width="1" height="1" ..../>
给大家做了个小例子
<?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;
我建议您不要使用正则表达式来解析(或操作)HTML,因为这不是一个好主意,and here's a great SO answer on why。
例如,通过使用 Peter 的方法 (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.
我得到了解决方案:
$description = preg_replace('!<img.*?width="1".*?/>!i', '', $description);
我想从字符串中删除特定图像。
我需要删除具有特定宽度和高度的图像。
我试过了,但这会删除第一张图片。
$description = preg_replace('/<img.*?>/', '123', $description, 1);
我想删除 any/all 个具有特定宽度和高度的图像。
例如。删除此图片 <img width="1" height="1" ..../>
给大家做了个小例子
<?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;
我建议您不要使用正则表达式来解析(或操作)HTML,因为这不是一个好主意,and here's a great SO answer on why。
例如,通过使用 Peter 的方法 (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.
我得到了解决方案:
$description = preg_replace('!<img.*?width="1".*?/>!i', '', $description);