PHP DOM 获取属性操作
PHP DOM getattribute manipulation
我正在努力寻找以下问题的答案...我怀疑我真的不知道我在问什么或如何问...让我描述一下:
我想从页面中获取一些链接。我只想要包含以下单词的链接作为 URL 的一部分:"advertid"。因此,例如,URL 类似于 http://thisisanadvertis.com/questions/ask.
我已经走到这一步了
<?php
// This is our starting point. Change this to whatever URL you want.
$start = "https://example.com";
function follow_links($url) {
// Create a new instance of PHP's DOMDocument class.
$doc = new DOMDocument();
// Use file_get_contents() to download the page, pass the output of file_get_contents()
// to PHP's DOMDocument class.
@$doc->loadHTML(@file_get_contents($url));
// Create an array of all of the links we find on the page.
$linklist = $doc->getElementsByTagName("a");
// Loop through all of the links we find.
foreach ($linklist as $link) {
echo $link->getAttribute("href")."\n";
}
}
// Begin the crawling process by crawling the starting link first.
follow_links($start);
?>
此 returns 页面上的所有 URL...没问题。因此,为了尝试获得我想要的 URLs,我尝试了一些方法,包括尝试修改 getattribute 部分:
echo $link->getAttribute("href"."*advertid*")."\n";
我已经尝试了一些东西...但无法得到我想要的。有人能给我指出正确的方向吗,我有点卡住了。
非常感谢。
foreach ($linklist as $link) {
if (strpos($link->getAttribute("href"), 'advertid') !== false) {
echo $link->getAttribute("href")."\n";
}
}
你可以检查 href 属性是否有你想要的信息,有一些逻辑,视情况而定:
foreach ($linklist as $link) {
if(strpos($link->getAttribute("href"), 'advertid') >= 0) {
echo $link->getAttribute("href")."\n";
}
}
我建议你使用 PHP 函数 strpos
strpos 至少有两个参数,第一个是你要搜索的字符串。第二个参数是你要在第一个字符串中查找的内容。
strpos returns 找到字符串的位置,如果找不到则返回 false。
所以你的循环看起来像:
foreach ($linklist as $link) {
if( strpos($link->getAttribute("href"), 'advertid') !== false ){
echo $link->getAttribute("href")."\n";
}
}
$links = []
foreach ($linklist as $link) {
$href = $link->getAttribute("href");
if (preg_match('/.*advertid.*/', $href)) {
array_push($links, $href);
}
}
我正在努力寻找以下问题的答案...我怀疑我真的不知道我在问什么或如何问...让我描述一下:
我想从页面中获取一些链接。我只想要包含以下单词的链接作为 URL 的一部分:"advertid"。因此,例如,URL 类似于 http://thisisanadvertis.com/questions/ask.
我已经走到这一步了
<?php
// This is our starting point. Change this to whatever URL you want.
$start = "https://example.com";
function follow_links($url) {
// Create a new instance of PHP's DOMDocument class.
$doc = new DOMDocument();
// Use file_get_contents() to download the page, pass the output of file_get_contents()
// to PHP's DOMDocument class.
@$doc->loadHTML(@file_get_contents($url));
// Create an array of all of the links we find on the page.
$linklist = $doc->getElementsByTagName("a");
// Loop through all of the links we find.
foreach ($linklist as $link) {
echo $link->getAttribute("href")."\n";
}
}
// Begin the crawling process by crawling the starting link first.
follow_links($start);
?>
此 returns 页面上的所有 URL...没问题。因此,为了尝试获得我想要的 URLs,我尝试了一些方法,包括尝试修改 getattribute 部分:
echo $link->getAttribute("href"."*advertid*")."\n";
我已经尝试了一些东西...但无法得到我想要的。有人能给我指出正确的方向吗,我有点卡住了。
非常感谢。
foreach ($linklist as $link) {
if (strpos($link->getAttribute("href"), 'advertid') !== false) {
echo $link->getAttribute("href")."\n";
}
}
你可以检查 href 属性是否有你想要的信息,有一些逻辑,视情况而定:
foreach ($linklist as $link) {
if(strpos($link->getAttribute("href"), 'advertid') >= 0) {
echo $link->getAttribute("href")."\n";
}
}
我建议你使用 PHP 函数 strpos
strpos 至少有两个参数,第一个是你要搜索的字符串。第二个参数是你要在第一个字符串中查找的内容。
strpos returns 找到字符串的位置,如果找不到则返回 false。
所以你的循环看起来像:
foreach ($linklist as $link) {
if( strpos($link->getAttribute("href"), 'advertid') !== false ){
echo $link->getAttribute("href")."\n";
}
}
$links = []
foreach ($linklist as $link) {
$href = $link->getAttribute("href");
if (preg_match('/.*advertid.*/', $href)) {
array_push($links, $href);
}
}