Php 如何使用文件获取内容和预匹配屏幕刮取这样的页面?
我有一个包含许多HTML行的页面,如下所示:Php 如何使用文件获取内容和预匹配屏幕刮取这样的页面?,php,screen-scraping,preg-match,file-get-contents,Php,Screen Scraping,Preg Match,File Get Contents,我有一个包含许多HTML行的页面,如下所示: <ul><li><a href='a_silly_link_that_changes_each_line.php'>the_content_i_need</a></li></ul> 正如你所看到的,这一行中有一个链接,不幸的是,每一行都有变化 因此,我需要一种方法,在不让链接妨碍的情况下,删去这一行的内容 我也尝试过这样做:.php'>(*),但这并不好,因为它会返回不需要
<ul><li><a href='a_silly_link_that_changes_each_line.php'>the_content_i_need</a></li></ul>
正如你所看到的,这一行中有一个链接,不幸的是,每一行都有变化
因此,我需要一种方法,在不让链接妨碍的情况下,删去这一行的内容
我也尝试过这样做:.php'>(*)
,但这并不好,因为它会返回不需要的内容
另外,因为页面上有很多行我需要从中获取内容,我可以通过某种方式循环吗
我正在使用preg\u match
和file\u get\u contents
但我愿意接受其他建议: 尝试使用
$match=array();
preg\u match\u all(“~\.php>(.*?”~”,file\u get\u contents($filename),$matches,preg\u SET\u ORDER)`。
这将匹配文件中的所有链接<代码>*?
表示“匹配0-inf字符,但尽可能少的字符”(贪婪杀手),这样您就不会得到任何未经授权的内容。来自:
使用类似于:
$str = '<ul><li><a src="test.html">linky</a></li></ul>';
$DOM = new DOMDocument;
$DOM->loadHTML($str);
$items = $DOM->getElementsByTagName('ul');
for($i =0;$i<$items->length;$i++){
$ul = $items->item($i);
$li=$ul->firstChild;
if($li->nodeName=='li' && $li->firstChild->nodeName=='a'){
//do something with $li->firstChild->nodeValue
}
}
$str='- linky
;
$DOM=新的DOMDocument;
$DOM->loadHTML($str);
$items=$DOM->getElementsByTagName('ul');
对于($i=0;$i长度;$i++){
$ul=$items->item($i);
$li=$ul->firstChild;
如果($li->nodeName=='li'&&$li->firstChild->nodeName=='a'){
//用$li->firstChild->nodeValue做点什么
}
}
在这种情况下,$li->firstChild->nodeValue
将是linky
这应该可以做到:)PREG\u SET\u顺序导致:致命错误:只能通过引用传递变量,因为您想要的每个链接都位于元素的- 元素中?每个
- 都有自己的
?感谢您使用正确的属性:)