Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从DOM结果中筛选出链接地址_Php_Html_Dom - Fatal编程技术网

Php 从DOM结果中筛选出链接地址

Php 从DOM结果中筛选出链接地址,php,html,dom,Php,Html,Dom,我正在使用DOM解析器,它通过类缩略图从网站获取链接。这将返回链接列表。然后将它们转换为图像状态并显示在页面上。我遇到的问题是,我有两个不同的链接被返回: 及 我需要过滤不包含I.imgur.com的链接的结果。如果链接是imgur链接,但不包含i。在我需要过滤掉它之前,不要显示。 到目前为止,我还不知道哪里出了问题。。。有什么建议吗 <?php $html = file_get_contents('http://www.reddit.com/r/funny'); $dom = new

我正在使用DOM解析器,它通过类缩略图从网站获取链接。这将返回链接列表。然后将它们转换为图像状态并显示在页面上。我遇到的问题是,我有两个不同的链接被返回:


我需要过滤不包含I.imgur.com的链接的结果。如果链接是imgur链接,但不包含i。在我需要过滤掉它之前,不要显示。 到目前为止,我还不知道哪里出了问题。。。有什么建议吗

<?php
$html = file_get_contents('http://www.reddit.com/r/funny');
$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');

foreach($hyperlinks as $hyperlink) {
 if (preg_match("/http://imgur.com/", $hyperlink->getAttribute('href'))){
  }
  else{
       echo "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />";
  echo "<br />";
  }
}
?>

您需要用
\/\/
转义
http://
中的
/

不过,您可能应该使用
strpos

if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
  echo "This is an i.imgur.com link!";
}

preg_match
是此任务的全部过度使用。使用
strpos
代替“如果链接是imgur链接但不包含i。在我需要过滤掉它之前,不要显示”-您需要过滤没有i的“imgur.com”链接吗?您是否需要过滤没有i的链接?我需要过滤没有i的链接。开始,这很有效!非常感谢你!很抱歉之前评论说它不起作用。我没有检查编辑。。。愚蠢的我!注意,如果您想避免转义一堆正向斜杠,可以使用不同的正则表达式分隔符(
@
是一个流行的选择)。是的,对此表示抱歉。在PHP中,参数顺序总是能让我理解。