php - 简单的 HTML DOM 解析器 - 在 foreach 循环中显示变量时出现问题
问题描述
我使用 simple_html_dom.php 类创建了一个简单的 PHP 脚本。我从网站上获取一些关于电影的信息。我在另一个 foreach 循环中有一个 foreach 循环。当我尝试在 foreach 循环中显示电影名称时,我得到了最后一个电影名称。我想要实现的是在每个项目中获取每个唯一的电影名称。问题在于 $movie 变量。
(当我在第 27 行回显 $movie var 时,我得到了正确的结果,但我希望在第 33 行的 youtube 链接中包含每个电影名称……)
<?php
include("simple_html_dom.php");
$tpb = 'https://tpb.party/search/2020/1/99/200';
$html = file_get_html(html_entity_decode($tpb));
foreach($html->find('tr.header') as $header) {
$header->outertext = '';
}
foreach($html->find('td') as $bottom) {
if ($bottom->colspan == '9') {
$bottom->outertext = '';
}
}
foreach($html->find('td.vertTh') as $vert) {
$vert->outertext = '';
}
foreach($html->find("div.detName") as $movie) {
$movie = $movie->plaintext;
echo $movie; //Works Okey, it displays each of the movietitles
foreach($html->find('img') as $img) {
if ($img->outertext == '<img src="https://tpb.party/static/img/11x11p.png" height="11" width="11">') {
$img->outertext = ' <a href="https://www.youtube.com/results?search_query='. $movie /* Doesn't work, only displays one title, not one each of the 30*/ .'" target="_blank"><img src="img/youtube.png" alt="Trailer" title="Trailer" style="width:19px;" width="19" height="18" border="0"></a>';
}
}
}
$html->save();
foreach($html->find("table") as $title) {
echo $title->outertext . '<br>';
}
?>
原始来源:
<td>
<div class="detName"> <a href="https://tpb.party/torrent/37614340/The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26" class="detLink" title="Details for The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26">The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26</a>
</div>
<a href="magnet:?xt=urn:btih:4AEE012597EBEA65840A96F62CEBE9926F8ECE5D&dn=The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2920%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.pirateparty.gr%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.cyberia.is%3A6969%2Fannounce"
title="Download this torrent using magnet"><img src="https://tpb.party/static/img/icon-magnet.gif" alt="Magnet link" height="12" width="12"></a>
<a href="https://tpb.party/user/sotnikam/"><img src="https://tpb.party/static/img/vip.gif" alt="VIP" title="VIP" style="width:11px;" border="0" height="11" width="11"></a><img src="https://tpb.party/static/img/11x11p.png" height="11" width="11">
<font class="detDesc">Uploaded 11-27 10:12, Size 2.71 GiB, ULed by <a class="detDesc" href="https://tpb.party/user/sotnikam/" title="Browse sotnikam">sotnikam</a> </font>
</td>
现在怎么样了:
替换 IMG 元素的 HTML 代码和问题是所有元素的链接都是相同的,当它们对于每个元素(如 MovieTitles)应该是唯一的时:
<td>
<div class="detName"> <a href="https://tpb.party/torrent/37614340/The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26" class="detLink" title="Details for The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26">The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26</a>
</div>
<a href="magnet:?xt=urn:btih:4AEE012597EBEA65840A96F62CEBE9926F8ECE5D&dn=The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2920%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.pirateparty.gr%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.cyberia.is%3A6969%2Fannounce"
title="Download this torrent using magnet"><img src="https://tpb.party/static/img/icon-magnet.gif" alt="Magnet link" height="12" width="12"></a>
<a href="https://tpb.party/user/sotnikam/"><img src="https://tpb.party/static/img/vip.gif" alt="VIP" title="VIP" style="width:11px;" border="0" height="11" width="11"></a>
<a href="https://www.youtube.com/results?search_query= The.Mandalorian.S02E05.Chapter.13.The.Jedi.2020.1080p.WEB-DL.X26 " target="_blank"><img src="img/youtube.png" alt="Trailer" title="Trailer" style="width:19px;" width="19" height="18" border="0"></a>
<font class="detDesc">Uploaded 11-27 10:12, Size 2.71 GiB, ULed by <a class="detDesc" href="https://tpb.party/user/sotnikam/" title="Browse sotnikam">sotnikam</a> </font>
</td>
解决方案
您想要的图像嵌套在detName
DIV 的同级之一中。因此,您可以通过在父元素中搜索来搜索它。
由于find()
允许更复杂的 CSS 选择器,您可以专门搜索您想要的图像,而不是遍历所有图像。
foreach($html->find("div.detName") as $movieDiv) {
$movie = $movieDiv->plaintext;
echo $movie; //Works Okey, it displays each of the movietitles
$img = $movieDiv->parent()->find('img[src="https://tpb.party/static/img/11x11p.png"]', 0);
if ($img) {
$img->outertext = ' <a href="https://www.youtube.com/results?search_query='. $movie .'" target="_blank"><img src="img/youtube.png" alt="Trailer" title="Trailer" style="width:19px;" width="19" height="18" border="0"></a>';
}
}
推荐阅读
- medium.com - 我想抓取 medium.com 网站上的所有帖子
- python-3.x - 从函数更改列表中的布尔值状态?
- c++ - OPENCV:查找线方向/角度
- machine-learning - 回归问题,使用 L1、L2 和 R2 时如何解释基线结果
- types - 输入函数式编程 (OCaml)
- npm - 即使在 npm init 之后,npm 也会全局安装包
- python-3.x - numpy 数组列表而不是一个热向量
- html - css动画无法在导航栏中实现
- mysql - 初始化mysql centos 6时遇到问题
- react-native - jest / react-native:替换/禁用 Linking.catch