0

我想href在任何 html 源中找到所有包含我的 URL 的标签。

我使用了这段代码:

preg_match_all("'<a.*?href=\"(http[s]*://[^>\"]*?)\"[^>]*?>(.*?)</a>'si", $target_source, $matches);

例如,我尝试查找包含的 href 标签http://www.emrekadan.com

我该怎么做 ?

4

1 回答 1

1

DOM为此,我只是使用 PHP 的Parser。这似乎比正则表达式更难,但实际上要容易得多,并且是解析 HTML的正确方法。

$url = 'WEBSITE_TO_SEARCH_FOR';
$searchstring = 'YOUR_SEARCH_STRING';
$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$result = array();

foreach($dom->getElementsByTagName('a') as $link) {
    $href = $link->getAttribute('href');
    if(stripos($href, $searchstring) !== FALSE) {
        $result[] = $href;
    }
}

if(!empty($result)) print_r($result);

解释:

  • loadHTMLfile()使用方法加载给定的 URL
  • 查找所有<a>标签并循环它们
  • 用于stripos()不区分大小写地检查 href 是否包含给定的搜索词
  • 如果是,则将其推入$result数组

注意:如果传递一个空字符串作为文件名或命名一个空文件,将生成一个警告。我曾经@隐藏该消息,但通常认为这是一种不好的做法。在尝试加载 URL 之前,您可以添加其他检查以确保 URL 存在。

于 2013-09-17T22:36:26.903 回答