PHP替换HTML格式文本中出现的所有特定字符串模式


PHP replacing all occurances of certain string pattern in HTML formatted text

我有输入文本,可以是带标签的长HTML文本等等

<p>Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipiscing elit.<p>
<p>%image1%</p>
<h2>Lorem ipsum</h2>
<p>Cum sociis natoque penatibus et magnis dis parturient montes.</p>
<p>%image2%</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>%image3%</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
...

找到%%字符之间所有出现的文本并用<img src="image1.jpg">替换的最简单方法是什么?

尝试使用preg_replace ('/%(.+?)%/', '<img src="image1.jpg">', $string); i可能有点偏离正则表达式模式,因为你需要转义%,如果?是贪婪的象征。

preg_replace('|%(.+)%|', '<img src="$1">', $text );

工作示例:http://codepad.org/20Oz3Vok

试试这个:

preg_replace('|%('w+)%|', '<img src="$1">', $string);

它只允许使用字母数字字符和下划线(以防止@AlexanderVarwijk在评论中指出的问题)。