我要preg_match号码$url1的"20,956“和$url2的"2,894,865”
$url1:
<meta name="description" content="‎ST. Eye Clinic - عيادة دكتور محمد عزب لطب و جراحة العيون‎, Dumyat Al Jadidah, Dumyat, Egypt. 20,956 visits ·$url2:
<meta name="description" content="ABC. 2,894,865 visits ·尝试对这两个urls都有效,它只适用于$url1,但不适用于$url2。
$p = preg_match("'Egypt. (.*?) visits'si", $url, $matches);
$p2 = preg_replace("/[^0-9]/", "", $matches[1]);
print $p2;有没有办法让它对两个$url1&2都有效?
发布于 2021-11-22 00:23:01
您可以使用
if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
echo $matches[0];
}见regex演示。详细信息
\d -一个数字[,\d]* -零或多个逗号/数字(?=\s*visits) -一个积极的前瞻性,需要零或多个空白空间,然后visits字符串立即在当前位置的右边。$urls = ['<meta name="description" content="‎ST. Eye Clinic - عيادة دكتور محمد عزب لطب و جراحة العيون‎, Dumyat Al Jadidah, Dumyat, Egypt. 20,956 visits ·',
'<meta name="description" content="ABC. 2,894,865 visits ·'];
foreach ($urls as $url) {
if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
echo $matches[0] . PHP_EOL;
}
}输出:
20,956
2,894,865https://stackoverflow.com/questions/70059439
复制相似问题