PHP正则表达式只获得符号

时间:2017-05-23 16:14:16

标签: php regex

我一直在浏览网站寻求帮助,但还没有找到我正在寻找的东西。想象一下,我有一个textarea具有以下值。

@3115
Hello this is a test post.

@115
Test quote

我正在尝试使用正则表达式在PHP中找到一种方法,即使有多个符号,也会获得“@”符号后面的数值。我在缠绕这个问题时遇到了麻烦。我想将正则表达式返回的值存储到数组中是我正在寻找的吗?

2 个答案:

答案 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这是任何数值,然后+表示捕获[数值]一次或多次。 ()使其成为捕获组,因此只会返回找到的号码,而不会返回前面的@