Php 如何使用文件获取内容和预匹配屏幕刮取这样的页面?

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'>(*),但这并不好,因为它会返回不需要

我有一个包含许多HTML行的页面,如下所示:

<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顺序导致:致命错误:只能通过引用传递变量,因为您想要的每个链接都位于
    元素的
  • 元素中?每个
  • 都有自己的
      ?感谢您使用正确的属性:)