我一直在浏览网站寻求帮助,但还没有找到我正在寻找的东西。想象一下,我有一个textarea具有以下值。
@3115
Hello this is a test post.
@115
Test quote
我正在尝试使用正则表达式在PHP中找到一种方法,即使有多个符号,也会获得“@”符号后面的数值。我在缠绕这个问题时遇到了麻烦。我想将正则表达式返回的值存储到数组中是我正在寻找的吗?
答案 0 :(得分:3)
试试这个:
$str = <<<EOF
@3115
Hello this is a test post.
@115
Test quote
EOF;
preg_match_all('/@(\d+)/', $str, $matches);
var_dump($matches[1]); // Returns an array like ['3115', '115']
preg_match_all
函数在输入字符串中获取正则表达式的所有匹配项,并返回捕获组。
/@(\d+)/
@
字面匹配字符。(
启动了一个捕获组。\d
匹配一个数字(等于[0-9])。+
表示数字可以重复一次或多次。)
结束捕获组。答案 1 :(得分:2)
(使用preg_match
函数作为示例,但函数无关紧要,正则中的正则表达式:)
$inputString = "@3115
Hello this is a test post.
@115
Test quote";
preg_match("/@(\d+)/",$inputString,$output);
//$output[1] = "3115";
//$output[2] = "115";
这将找到@
字符,然后找到\d
这是任何数值,然后+
表示捕获[数值]一次或多次。 ()
使其成为捕获组,因此只会返回找到的号码,而不会返回前面的@
。