[英]PHP how to extract 3 digits from a string and output it
这是一个奇怪的问题。 我正在尝试从字符串中获取连续的3位整数。
现在我以为我可以使用下面的代码成功完成此操作...
preg_match_all('!\d+!', $image['title'], $integer); echo $integer[0][2];
但是现在似乎在某些字符串上失败了。
在这些字符串上工作正常...
但是然后在这个字符串上失败了...
是否有另一种可能的方法可以成功提取3位整数而又不会与其他整数混淆。 我想这将是一个聪明的PHP来做到这一点。
唯一一致的模式是,在3位数字的前面总是有一个空格,在3位数字的后面是句号或空格。
这取决于确切的要求,但是在您给出的示例中,您只需要数组的最后一个元素,因此可以替换:
echo $integer[0][2];
与:
echo end($integer[0]);
最可靠的方法应该是
preg_match_all('!(\d{3})(?=(?:(?!\d{3}).)*$)!m', $str, $integer);
在此处查看其运行情况: http : //regex101.com/r/pJ0xN4
这也是结构上的解释:
当前的正则表达式提取标题中的所有数字序列。 为了只提取最后三位数字,我们可以使用一个仅捕获标题中最后一个序列的正则表达式(空格,行前和“行尾” = $
)-我们始终将结果保留在结果数组:
$str = "TZR9000 Supertroop 2014 001";
preg_match_all('! (\d+)$!', $str, $integer);
echo $integer[0][0];
$str = "We like the moon 2013 Stand 010";
preg_match_all('! (\d+)$!', $str, $integer);
echo $integer[0][0];
输出:
001 010
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.