我有以下正则表达式用[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">
感谢帮助。
答案 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解析器。它们更可靠。