【发布时间】:2012-03-29 19:23:36
【问题描述】:
我正在尝试使用 preg_replace() 即时删除文档的一部分。
/* target example:
<li id="footer-poweredbyico">
<img src="//bits.wikimedia.org/skins-1.18/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" />
</li>
*/
$reg = preg_quote('<li id="footer-poweredbyico">.*?</li>');
preg_replace($reg,"",$str);
忽略 PHP 中的任何错误,这个问题是关于如何正确格式化正则表达式以删除与目标示例开始和结束标记匹配的任何内容。每次包含的HTML标签的内容都会不同,因此.*?(我认为这是错误的)。
【问题讨论】:
-
@Robbie 假设他不需要未来的灵活性,并且他愿意接受这将要放置的相当严格的约束,正则表达式可能是这项工作的正确工具。有时,在我看来,一个完整的 HTML 解析实际上是 过大了。
-
现在,无论您是否想混淆解析和匹配...您的正则表达式缺少分隔符、
/s修饰符,并且在所需的元字符上盲目应用preg_quote是这里的实际错误。
标签: php regex preg-replace mediawiki