PHP正则表达式:如何在一行代码中获得价值?

时间:2014-03-06 15:21:56

标签: php regex

问题是如何以最短的方式从preg_match()函数获取值。

比方说,我知道我的字符串以数字结尾。我确定! 100%!它在石头上!!! 我需要的是价值......

到目前为止,我做了

preg_match('/(\d+)$/', $mystring, $m);
echo $m[1];

有没有办法在一行代码中执行此操作?

我试过了:

echo preg_match('/(\d+)$/', $mystring, $m)[1];

错误返回....

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

改为使用preg_replace()

echo preg_replace('/^.*?(\d+)$/', '$1', $str);

<强>解释

  • ^ - 在字符串开头处断言位置
  • .*? - 匹配任何字符(换行符除外)
  • \d+ - 匹配(并捕获)一个或多个数字
  • $ - 在字符串末尾断言位置
  • $1 - 第一个捕获组捕获的内容

答案 1 :(得分:3)

不是我提倡这一点,但在这种特殊情况下,你可以这样做:

echo $m[preg_match('/(\d+)$/', $mystring, $m)];

放入可维护的源代码太复杂和脆弱,但我认为这是指针和引用传递的一个有趣的例子,所以我想把它放在这里。它依赖于只有一个匹配(由preg_match保证,但不保证preg_match_all),并且所需的文本在第一组中,但它可以工作。

http://ideone.com/eWZoCD