首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自元名称的preg_match字符串

来自元名称的preg_match字符串
EN

Stack Overflow用户
提问于 2021-11-21 23:26:11
回答 1查看 47关注 0票数 1

我要preg_match号码$url1的"20,956“和$url2的"2,894,865”

$url1:

代码语言:javascript
复制
<meta name="description" content="&#x200e;ST. Eye Clinic - &#x639;&#x64a;&#x627;&#x62f;&#x629; &#x62f;&#x643;&#x62a;&#x648;&#x631; &#x645;&#x62d;&#x645;&#x62f; &#x639;&#x632;&#x628; &#x644;&#x637;&#x628; &#x648; &#x62c;&#x631;&#x627;&#x62d;&#x629; &#x627;&#x644;&#x639;&#x64a;&#x648;&#x646;&#x200e;, Dumyat Al Jadidah, Dumyat, Egypt. 20,956 visits &#xb7;

$url2:

代码语言:javascript
复制
<meta name="description" content="ABC. 2,894,865 visits &#xb7;

尝试对这两个urls都有效,它只适用于$url1,但不适用于$url2。

代码语言:javascript
复制
$p = preg_match("'Egypt. (.*?) visits'si", $url, $matches);
$p2 = preg_replace("/[^0-9]/", "", $matches[1]);      
print $p2;

有没有办法让它对两个$url1&2都有效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-22 00:23:01

您可以使用

代码语言:javascript
复制
if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
  echo $matches[0];
}

regex演示。详细信息

  • \d -一个数字
  • [,\d]* -零或多个逗号/数字
  • (?=\s*visits) -一个积极的前瞻性,需要零或多个空白空间,然后visits字符串立即在当前位置的右边。

PHP演示

代码语言:javascript
复制
$urls = ['<meta name="description" content="&#x200e;ST. Eye Clinic - &#x639;&#x64a;&#x627;&#x62f;&#x629; &#x62f;&#x643;&#x62a;&#x648;&#x631; &#x645;&#x62d;&#x645;&#x62f; &#x639;&#x632;&#x628; &#x644;&#x637;&#x628; &#x648; &#x62c;&#x631;&#x627;&#x62d;&#x629; &#x627;&#x644;&#x639;&#x64a;&#x648;&#x646;&#x200e;, Dumyat Al Jadidah, Dumyat, Egypt. 20,956 visits &#xb7;',
    '<meta name="description" content="ABC. 2,894,865 visits &#xb7;'];
foreach ($urls as $url) {
  if (preg_match('~\d[,\d]*(?=\s*visits)~', $url, $matches)) {
    echo $matches[0] . PHP_EOL;
  }
}

输出:

代码语言:javascript
复制
20,956
2,894,865
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70059439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档