在 php simplepie rss 中获取图像的条件循环
conditional loop to fetch images in php simplepie rss
我正在尝试在 PHP 中使用 SimplePie 制作新闻 reader。当我尝试从提要中获取图像时,一切正常。以我的一点理解,我得出的结论是我必须通过以下三种方式中的任何一种来获取图像。
1) 使用 $item->get_enclosure()
和以下代码获取图像:
<?php
//Find Images from $item->get_enclosure()
if ($enclosure = $item->get_enclosure()){
$imageLink = $enclosure->get_link();
if($imageLink !== "//?#") {
echo "<a href=\"" . $item->get_permalink() . "\"><img src=\"$imageLink\"></a>";
$imageLink = null;
}
}
?>
2) 如果没有图像,那么我必须使用 $item->get_content()
和以下代码来获取:
// Search for Images in $item->get_content() using str_img_src()
if ($iurl = str_img_src($item->get_content())) {
echo "<a href=\"" . $item->get_permalink() . "\"><img src=\"$iurl\"></a>";
}
?>
3) 如果我也失败了,我应该从 post 永久链接中获取如下:
<?php
if ($imageLink === "//?#" && !$iurl) {
// echo "Mandan<br>";
$html = file_get_contents($item->get_permalink());
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
$imgUrl = "http://" . $tag->getAttribute('src');
echo "<div style=\"float: left;\"></div><a href=\"" . $imgUrl . "\"><img src=\"" . $imgUrl . "\"></a><br>";
}
}
?>
我的问题是我不知道如何仅通过一种方法获取图像。如果我在第一个方法中成功了,那么我应该跳过第二个和第三个。如果首先失败,则应检查是否可能使用第二种方法,如果成功,我的程序应跳过第三种方法。最后,如果第 1 和第 2 次失败,它应该使用第 3 种方法获取图像。
我尝试了 if
和 ifelse
循环,但没有成功。我怎样才能创建一个循环来执行此操作而不破坏其他人?
抱歉我的问题很长。不知道如何让它变短。
正如@devon 所说,我尝试使用 else if,它完成了我的工作。我没有在单独的 if 循环中检查每个图像的可用性,而是遍历了 if elseif 循环。因此只生成一个结果,如果检索到任何图像,则循环停止并跳出
我正在尝试在 PHP 中使用 SimplePie 制作新闻 reader。当我尝试从提要中获取图像时,一切正常。以我的一点理解,我得出的结论是我必须通过以下三种方式中的任何一种来获取图像。
1) 使用 $item->get_enclosure()
和以下代码获取图像:
<?php
//Find Images from $item->get_enclosure()
if ($enclosure = $item->get_enclosure()){
$imageLink = $enclosure->get_link();
if($imageLink !== "//?#") {
echo "<a href=\"" . $item->get_permalink() . "\"><img src=\"$imageLink\"></a>";
$imageLink = null;
}
}
?>
2) 如果没有图像,那么我必须使用 $item->get_content()
和以下代码来获取:
// Search for Images in $item->get_content() using str_img_src()
if ($iurl = str_img_src($item->get_content())) {
echo "<a href=\"" . $item->get_permalink() . "\"><img src=\"$iurl\"></a>";
}
?>
3) 如果我也失败了,我应该从 post 永久链接中获取如下:
<?php
if ($imageLink === "//?#" && !$iurl) {
// echo "Mandan<br>";
$html = file_get_contents($item->get_permalink());
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
$imgUrl = "http://" . $tag->getAttribute('src');
echo "<div style=\"float: left;\"></div><a href=\"" . $imgUrl . "\"><img src=\"" . $imgUrl . "\"></a><br>";
}
}
?>
我的问题是我不知道如何仅通过一种方法获取图像。如果我在第一个方法中成功了,那么我应该跳过第二个和第三个。如果首先失败,则应检查是否可能使用第二种方法,如果成功,我的程序应跳过第三种方法。最后,如果第 1 和第 2 次失败,它应该使用第 3 种方法获取图像。
我尝试了 if
和 ifelse
循环,但没有成功。我怎样才能创建一个循环来执行此操作而不破坏其他人?
抱歉我的问题很长。不知道如何让它变短。
正如@devon 所说,我尝试使用 else if,它完成了我的工作。我没有在单独的 if 循环中检查每个图像的可用性,而是遍历了 if elseif 循环。因此只生成一个结果,如果检索到任何图像,则循环停止并跳出