Php 从DOM结果中筛选出链接地址
我正在使用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
我需要过滤不包含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中,参数顺序总是能让我理解。