小修复正则表达式以获取字符串的数字序列

时间:2016-09-12 11:58:33

标签: php regex

我正在尝试从下面的行中获取数字序列。

<div data-cid="8558641" class="clsfd_list_row_group">

我这样做有点运气

preg_match_all('!<div data-cid="\/(.*?)\/" class="clsfd_list_row_group">!is', $str, $urls);

我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试:

<div data-cid="(.*?)" class="clsfd_list_row_group">

"\/(.*?)\/"正在寻找更像"(content)"的内容,但在您的示例输入中,tere不是大括号。

答案 1 :(得分:0)

您可以使用xpath查询轻松完成此操作:

<?php

$data = <<<DATA
<div>
    <div data-cid="8558641" class="clsfd_list_row_group">
    <div data-cid="12345" class="clsfd_list_row_group">
    <div data-cid="123" class="clsfd_list_row_group">
</div>
DATA;


$dom = new DOMDocument();
$dom->loadHTML($data);

$xpath = new DOMXPath($dom);

$cids = $xpath->query("//div[@class='clsfd_list_row_group']/@data-cid");
foreach ($cids as $cid) {
    echo $cid->nodeValue . "\n";
}
?>

这会输出855864112345123,请参阅a demo on ideone.com