【问题标题】:preg_match a <link> hrefpreg_match <链接> href
【发布时间】:2012-03-10 09:43:12
【问题描述】:

我正在尝试做一些我认为很简单的事情,但没有运气。目标是从任何标签中获取 href 值。示例:

来源材料:

<link href="http://www.somesite.com/test.css" rel="stylesheet" type="text/css">

正则表达式尝试:

<link[^>]*href=["{1}](.*?)["{1}][^>]*>

它在http://regexpal.com/ 似乎有效,但我正在http://www.solmetra.com/scripts/regex/index.php 尝试它,但它不起作用。

有什么想法吗?

【问题讨论】:

    标签: php regex preg-match href


    【解决方案1】:

    看起来你在字符类[] 中有{1},但它应该真正遵循。实际上,它甚至没有必要,因为它是隐式的。但是,您应该使用 [^"] 将所有内容匹配到下一个引号:

    <link[^>]*href="([^"]*)"[^>]*>
    

    注意:您只是在尝试匹配双引号的 href 属性。如果您希望遇到任何单引号属性,则需要进行修改。

    强制性公共服务公告:最好使用适当的HTML解析库来解析HTML并检索属性,而不是尝试使用正则表达式解析它。

    【讨论】:

    • 做到了 - 谢谢!我确信 HTML 解析器将是可行的方法,但在项目到期之前我只有 3 小时的时间。有时蛮力就是答案。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2015-09-18
    • 2018-11-01
    • 2018-09-18
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多