问题是如何以最短的方式从preg_match()
函数获取值。
比方说,我知道我的字符串以数字结尾。我确定! 100%!它在石头上!!! 我需要的是价值......
到目前为止,我做了
preg_match('/(\d+)$/', $mystring, $m);
echo $m[1];
有没有办法在一行代码中执行此操作?
我试过了:
echo preg_match('/(\d+)$/', $mystring, $m)[1];
错误返回....
有什么想法吗?
答案 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
),并且所需的文本在第一组中,但它可以工作。