【问题标题】:Regex - Pattern to Replace a HTML tag with specified attribute value正则表达式 - 用指定的属性值替换 HTML 标记的模式
【发布时间】:2016-04-04 14:19:11
【问题描述】:

我正在使用 PHP,我想检查以下标签:iframescript

如果它们在 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> */

谁能帮我完成这个正则表达式操作?

【问题讨论】:

  • 我建议为此使用DOMDocumentXPath 的组合,而不是正则表达式。 this question 的答案也可能对您有所帮助
  • @sebastianForsberg,我认为 1 个正则表达式比 DOMDocument 最快
  • 好吧,正则表达式对于 HTML 解析可能不可靠,这取决于您的需求以及您要传递给脚本的输入类型。更多详情请参阅this question 的答案...
  • 另外,到目前为止,您尝试过什么?您的代码 sn-p 表明您尚未尝试任何正则表达式模式。如果您甚至没有尝试过正则表达式,那么如果这是您要采取的路线,那么您应该从那里开始。我过去曾使用this tool 进行正则表达式测试。
  • @VasileAlexandruPeste 如果正则表达式不正确,它们是否更快并不重要。请参阅htmlparsing.com/regexes.html,了解为什么这个问题比您最初怀疑的更难。此外,如果您甚至使正则表达式足够健壮以处理所有这些情况(以及更多情况),它很快就会变得无法维护。

标签: php html regex replace html-parsing


【解决方案1】:

我想帮忙。

在 vim 中使用正则表达式进行搜索。

在 vim 中使用正则表达式进行搜索。

在 vim 中用正则表达式替换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2019-10-16
    相关资源
    最近更新 更多