PHP:我的正则表达式代码不适用于本地,但在regex101上可以正常工作

时间:2018-11-02 18:56:21

标签: php regex

我使用regex101测试我的正则表达式

这是我的正则表达式:

var price_limit = {
    'price': {
        '$gte': 100000
    }
}

这是代码:

<a href="/name/nm0000130/\?ref_=ttfc_fc_cr8">(.*)</a>

此代码在regex101上正常工作,但是如果我通过<tr> <td class="name"> <a href="/name/nm0000130/?ref_=ttfc_fc_cr8"> Jamie Lee Curtis </a> </td> <td>...</td> <td class="credit"> executive producer </td> </tr> 获取数据并使用它,则我在php中的regex无法正常工作

我确定数据加载已完成

我的php代码:

file_get_contents

此页面上的其他我的正则表达式代码都可以正常工作,但这不起作用

我的代码;

$data = file_get_contents('https://www.imdb.com/title/tt'.$tt.'/fullcredits', false, stream_context_create($contextOption));
preg_match_all('~<a href="/name/nm0000130/\?ref_=ttfc_fc_cr8">(.*)</a>~isU', $data, $return);

1 个答案:

答案 0 :(得分:2)

如果要解析html don't use a regex。而是使用DOMDocument或其他专门用于这项工作的工具。

这是一个基本示例,说明如何使用DOMXpath class处理同一件事:

// get the html
$contextOption = ["ssl" => ["verify_peer" => false, "verify_peer_name" => false, "allow_self_signed" => true]];
$data = file_get_contents('https://www.imdb.com/title/tt1502407/fullcredits', false, stream_context_create($contextOption));

// load the html into DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($data);
$xpath = new DomXPath($dom);

// get anchor tag with href matching
$anchor = $xpath->query('//a[@href="/name/nm0000130/?ref_=ttfc_fc_cl_t1"]');

echo $anchor->item(0)->textContent;

输出:

  

Jamie Lee Curtis