我试图匹配我定义的模式中第一次出现的数字。模式是 adunit [数字] 。例如,我可以使用 adunit23423 或 adunit23 的字符串。数字的长度可以变化。
到目前为止我的代码:
$title = "*adunit54* testing this";
preg_match_all('!\d+!', $title, $matches);
$var = implode(' ', $matches[0]);
echo $var;
哪个会输出:54
但如果我要将字符串更改为" adunit54 测试thi23s",则输出将更改为:54 23
如何使此表达式仅获取 adunit [number] 模式中的第一组数字?
答案 0 :(得分:1)
只需使用preg_match
函数,这有助于在preg_match_all
进行全局匹配的情况下执行单个匹配。
$title = "*adunit54* testing this";
preg_match('!\d+!', $title, $matches);
echo $matches[0];
如果您仍想使用preg_match_all,请遵循此技巧。
preg_match_all('!^\D*\K\d+!', $title, $matches);