preg_match 来自元名称的字符串
preg_match string from meta name
我想 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 ·
试过这对两个 url 都有效,它只适用于 $url1 但不适用于 $url2
$p = preg_match("'Egypt. (.*?) visits'si", $url, $matches);
$p2 = preg_replace("/[^0-9]/", "", $matches[1]);
print $p2;
有什么办法让它同时适用于 $url1 和 2 吗?
您可以使用
if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
echo $matches[0];
}
参见regex demo。 详情:
\d
- 一个数字
[,\d]*
- 零个或多个 commas/digits
(?=\s*visits)
- 正向前瞻,需要零个或多个空格,然后 visits
字符串紧接在当前位置的右侧。
看到一个PHP demo:
$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,865
我想 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 ·
试过这对两个 url 都有效,它只适用于 $url1 但不适用于 $url2
$p = preg_match("'Egypt. (.*?) visits'si", $url, $matches);
$p2 = preg_replace("/[^0-9]/", "", $matches[1]);
print $p2;
有什么办法让它同时适用于 $url1 和 2 吗?
您可以使用
if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
echo $matches[0];
}
参见regex demo。 详情:
\d
- 一个数字[,\d]*
- 零个或多个 commas/digits(?=\s*visits)
- 正向前瞻,需要零个或多个空格,然后visits
字符串紧接在当前位置的右侧。
看到一个PHP demo:
$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,865