php正则删除img标签的方法示例 原创

关于“PHP正则删除img标签的方法示例”,我们可以采取以下步骤:

关于“PHP正则删除img标签的方法示例”,我们可以采取以下步骤:

1. 获取HTML内容

首先,我们需要获取HTML的内容,可以使用PHP内置函数file_get_contents() 或者 curl进行获取:

$html = file_get_contents('http://example.com');
// 或者
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($curl);
curl_close($curl);

2. 编写正则表达式

接下来,我们需要编写正则表达式,以匹配HTML中的<img>标签,从中获取出要删除的部分。

在使用正则表达式过程中,我们需要先了解正则表达式的语法,以及一些常用的元字符和模式修饰符。下面是一个基本的正则表达式,用来匹配HTML中的<img>标签:

$pattern = '/<img[^>]+>/i';

正则表达式的解释如下:
- <img 匹配开头的<img标签
- [^>]+ 匹配标签中的其他属性,排除掉结尾的" >"字符(也就是匹配位于'> '后面任何其他字符)
- > 匹配结尾的">"字符
- /i 增加模式修饰符,表示不敏感

3. 删除匹配的内容

有了正则表达式,我们就可以使用PHP内置函数preg_replace()进行匹配替换,进而实现删除<img>标签的目的。代码示例如下:

$newHtml = preg_replace($pattern, '', $html);
echo $newHtml;

这里的$newHtml就是删除了所有<img>标签的HTML内容了。

有时候,我们可能只需要删除某一部分的<img>标签,例如只删除带有width="100"<img>标签,那么正则表达式可以针对这种情况做一些变动,例如:

$pattern = '/<img\s+[^>]*?width=\"100\"[^>]*?>/i';

这样,就只会删除包含width="100"<img>标签了。

示例说明

  1. 删除HTML中所有的标签

HTML代码:

<div>
  <img src="a.jpg" alt="图片A">
  <img src="b.jpg" alt="图片B">
</div>

PHP代码:

$html = '<div>
  <img src="a.jpg" alt="图片A">
  <img src="b.jpg" alt="图片B">
</div>';

$pattern = '/<img[^>]+>/i';
$newHtml = preg_replace($pattern, '', $html);
echo $newHtml;

输出结果:

<div>

</div>
  1. 删除HTML中所有宽度为100的标签

HTML代码:

<div>
  <img src="a.jpg" alt="图片A" width="100">
  <img src="b.jpg" alt="图片B">
  <img src="c.jpg" alt="图片C" width="100">
</div>

PHP代码:

$html = '<div>
  <img src="a.jpg" alt="图片A" width="100">
  <img src="b.jpg" alt="图片B">
  <img src="c.jpg" alt="图片C" width="100">
</div>';

$pattern = '/<img\s+[^>]*?width=\"100\"[^>]*?>/i';
$newHtml = preg_replace($pattern, '', $html);
echo $newHtml;

输出结果:

<div>
  <img src="b.jpg" alt="图片B">

</div>

本文标题为:php正则删除img标签的方法示例 原创

基础教程推荐