从网站 php 中提取信息不起作用


Extracting info from a site php not working

        <?php
        $url = "http://www.lolking.net/summoner/euw/20849404";
        $str = file_get_contents($url);
        if (preg_match('/<ul class="personal_ratings"> ([^<]*)<'/ul>/', $str, $matches) > 0) {
            echo $matches[1]; //This is text one
        }
        ?>

大家好,我正在尝试从我提供$url中提取所有个人评级信息,由于某种原因我找不到像这样提取它的方法,我一直在尝试很多不同的方法,但我想这是我缺乏正则表达式知识在这里工作,这可能是一个小的愚蠢错误,但在过去的几天里我一直在寻找解决这个问题。

我看到一些错误:

  1. 您认为是纯文本的表达式部分包含正则表达式特殊字符。您可以考虑转义它们或使用preg_quote()函数或使用~而不是/来包装表达式。
  2. 如果<ul>节点拆分为多行 html 代码,则需要添加s开关。
  3. 我个人会使用带有不贪婪开关的(.*)U在表达式末尾)

我没有时间检查这个,但如果网站结构与您的表达式相同,这个应该可以工作:preg_match('~<ul class="personal_ratings">(.*)</ul>~Us', ...

无论如何,对于解析 HTML,使用一些 DOM 解析器要容易得多,比如 PHP Simple HTML DOM 解析器。它就像:

$html = file_get_html('http://www.lolking.net/summoner/euw/20849404');
$ratings = $html->find('ul.personal_ratings',0)->innertext;

正则表达式特殊字符是:. ' + * ? [ ^ ] $ ( ) { } = ! < > | : -