【问题标题】:php regex for link url链接url的php正则表达式
【发布时间】:2009-09-30 08:41:39
【问题描述】:

嘿伙计们,我需要正则表达式方面的帮助。

我正在使用 file_get_contents() 来获取页面的源代码,然后我想遍历源代码并找到所有的并将所有 HREF 值提取到一个数组中。

谢谢

【问题讨论】:

    标签: php regex url file-get-contents


    【解决方案1】:

    您最好使用真正的解析器,例如SimpleXMLDOMDocument,而不是正则表达式。这是一个带有 DOMDocument 的示例,它将为您提供 A 元素的数组:

    $doc = new DOMDocument();
    $doc->loadHTML($str);
    $aElements = $doc->getElementsByTagName("a");
    foreach ($aElements as $aElement) {
        if ($aElement->hasAttribute("href")) {
            // link; use $aElement->getAttribute("href") to retrieve the value
        } else {
            // not a link
        }
    }
    

    【讨论】:

    • 我应该假设 $str 是 file_get_contents() 的返回值吗?
    • 好吧,我使用了您的代码,但它通过了大量关于未格式化标签等的错误。所以我做了一些挖掘,发现了一个正则表达式 preg_match_all("/href=\"(.*?)\"/", $html, $aElements);我将如何使用它来仅查找 http 源?
    • 我不会使用正则表达式。因为 HTML 不是常规语言。顺便说一句:您是否尝试禁用 strictErrorChecking(请参阅docs.php.net/manual/en/…)?
    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多