对regex进行了小修复,以获取字符串的数字序列


Small fix to regex to get numbers sequence of a string

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

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

我做这个没有任何运气

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

我做错了什么?

try with:

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

"'/(.*?)'/"正在寻找更像"(content)"的东西,但在示例输入中没有大括号。

您可以轻松地使用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";
}
?>

输出8558641, 12345123,参见 ideone.com上的演示