PHP正则表达式用[IMG]替换html img标签

时间:2011-09-19 14:20:45

标签: php html regex image

我有以下正则表达式用[IMG];

替换html img标签
echo preg_replace('/(^<img) (.*) (>$)/i', '[IMG]', $subject);

它在一定程度上按预期工作,但是我工作的一些img标签以'/&gt;'结尾有些以'&gt;'结尾。我无法让上述内容与后者合作。

样本1(有效):

<img src="image-1.gif" alt="image-1" width="175>" height="80" />

样本2(不起作用)

<img src="image-2.gif" width="77" height="51" alt="image-2">

感谢帮助。

3 个答案:

答案 0 :(得分:1)

虽然Pekka说你应该使用HTML解析器(我完全同意)是正确的,但出于教育的考虑,你可以使用'{'}字符?,它将前一个字符标记为可选:

echo preg_replace('/(^<img) (.*)(\\\?>$)/i', '[IMG]', $subject);

注意\\\?。我们逃避反斜杠和问题marl(用反斜杠),然后说'这个字符是可选的'。

答案 1 :(得分:0)

我建议提取网址,然后手动编写[IMG]标记。

e.g。

preg_match('/src="(.*?)"/', '<img src="image-2.gif" width="77" height="51" alt="image-2">', $matches)
echo '[IMG]'.$matches[1].'[/IMG]';

晒。

答案 2 :(得分:0)

我会尝试使用DOM解析器。它们更可靠。

http://simplehtmldom.sourceforge.net/