这有点奇怪。我只想从字符串中获取连续的3位整数。
现在我以为我使用下面的代码成功地做到了...
preg_match_all('!\d+!', $image['title'], $integer); echo $integer[0][2];
但现在似乎在某些字符串上失败了。
它在这些字符串上工作正常......
但是它在这个字符串上失败了......
是否有另一种可能的方法可以成功提取3位数整数而不与其他整数混淆。我想它必须是一个聪明的PHP才能做到这一点。
唯一一致的模式是,3位数字前面总是有一个空格,或者是3位数后的全站点或空格。
答案 0 :(得分:2)
这取决于具体要求,但在您给出的示例中,您只需要数组的最后一个元素,因此您可以替换:
echo $integer[0][2];
使用:
echo end($integer[0]);
答案 1 :(得分:1)
最坚决的方式应该是
preg_match_all('!(\d{3})(?=(?:(?!\d{3}).)*$)!m', $str, $integer);
在此处查看此操作:http://regex101.com/r/pJ0xN4
这里也是一个结构性解释:
答案 2 :(得分:0)
当前的正则表达式提取标题中的所有数字序列。为了只提取最后三位数,我们可以使用一个正则表达式,它只抓取标题中的最后一个序列(前一个空格和“行尾”= $
) - 我们总是会得到结果结果数组的第一项:
$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