PHP从包含4位,5位,6位数字的字符串中仅提取4位数字

时间:2018-11-09 06:25:32

标签: php regex string

enter image description here我已经尝试了许多php函数,例如strpos(),preg_match(),但是它们都不起作用。我有一个字符串

我只想提取四位数字1234。

<?php
 $texxt="abcd1245 784563 1234 98756 kfg7456178";
 $results=array();
 preg_match('/[0-9]{4}/', $texxt, $results);
 print_r($results);
 ?>

但是上面的代码返回1245而不是1234.如果我删除abcd1245,那么输出是7845.实际的字符串非常大,它包含超过200个数字,如上所述。我只需要确切的4位数字。有什么办法可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

您需要在图案的两侧放置边界。

\b\d{4}\b

一种替代方法是对空格使用\s而不是\b-因为边界将匹配其他非字母数字字符。完全取决于您要寻找的东西。

See it here

答案 1 :(得分:0)

如您所说,您有200多个号码,然后使用以下代码:

<?php
 $texxt="abcd1245 784563 1234 3421 98756 kfg7456178";
 $results=array();
 preg_match_all('/\b\d{4}\b/', $texxt, $results);
 print_r($results);
?>
  

preg_match仅检查一个事件,而preg_match_all则检查所有事件。   有关正则表达式的解释,请参考 doc