【发布时间】:2016-04-04 14:19:11
【问题描述】:
我正在使用 PHP,我想检查以下标签:iframe 和 script
如果它们在 src 属性中包含 X 值,我希望将 Y 类添加到标记并将 src 属性名称更改为 data-src。
例如
$blacklist = array("google.com/plus.js", "google.com/drive.js");
$myclass = "blocked";
$html = '<script src="http://google.com/plus.js"></script>';
foreach($blacklist as $black)
{
$html = preg_replace(...);
}
/* now $html must be: "<script data-src="google.com/plus.js" class="blocked"></script> */
谁能帮我完成这个正则表达式操作?
【问题讨论】:
-
我建议为此使用DOMDocument 和XPath 的组合,而不是正则表达式。 this question 的答案也可能对您有所帮助
-
@sebastianForsberg,我认为 1 个正则表达式比 DOMDocument 最快
-
好吧,正则表达式对于 HTML 解析可能不可靠,这取决于您的需求以及您要传递给脚本的输入类型。更多详情请参阅this question 的答案...
-
另外,到目前为止,您尝试过什么?您的代码 sn-p 表明您尚未尝试任何正则表达式模式。如果您甚至没有尝试过正则表达式,那么如果这是您要采取的路线,那么您应该从那里开始。我过去曾使用this tool 进行正则表达式测试。
-
@VasileAlexandruPeste 如果正则表达式不正确,它们是否更快并不重要。请参阅htmlparsing.com/regexes.html,了解为什么这个问题比您最初怀疑的更难。此外,如果您甚至使正则表达式足够健壮以处理所有这些情况(以及更多情况),它很快就会变得无法维护。
标签: php html regex replace html-parsing