【问题标题】:Links that doesn't look like links看起来不像链接的链接
【发布时间】:2015-09-25 00:33:16
【问题描述】:

我有一些代码可以获取页面的所有链接,但有些代码获取的链接看起来不像链接。例如,索引 0-4 获得了名为“javascript:void(0)”的链接,而索引 5 获得了一个只有“/”的空白链接。我该如何解决?谢谢。

$content = file_get_contents("http://bestspace.co"); //get content of page

$links = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; //set regular expression to get links
preg_match_all("/$links/siU", $content, $matches); //get all links on page and store in array $matches[2]

print_r($matches[2]);

数组内容

Array ( 

[0] => javascript:void(0) 
[1] => javascript:void(0) 
[2] => javascript:void(0) 
[3] => javascript:void(0) 
[4] => javascript:void(0) 
[5] => / 
[6] => /bestdeals 
[7] => /about-us 
[8] => /why-choose-us 
[9] => /products 
[10] => https://cloud.bestspace.co/clientarea.php 

ect... );

【问题讨论】:

  • link 对你来说是什么?这些是hrefs 的值。您可以修改正则表达式,使href 的值以/http 开头。第 10 个值是唯一一个我认为是链接的值。
  • 您是否希望它返回完全限定的 URL?请澄清您所说的“链接”是什么意思
  • @JesseFulton 我会说 6-10 都是链接。
  • / 是一个完全有效的href...将带您到站点的根目录。除了javascript:void() 之外的所有路径都是有效的网络路径
  • 使用array_filter 删除以javacscript: 开头的所有条目。

标签: javascript php hyperlink web-crawler permalinks


【解决方案1】:

使用 array_filter 删除所有 Javascript 链接。

$links = array_filter($matches[2], function($x) {
    return substr($x, 0, 11) != 'javascript:';
});

【讨论】:

  • 你的意思是!==。你忘了!
猜你喜欢
  • 2011-07-10
  • 2018-08-21
  • 1970-01-01
  • 2018-05-17
  • 2016-01-13
  • 2012-08-02
  • 2021-02-08
  • 2018-05-29
  • 1970-01-01
相关资源
最近更新 更多