" [回复]"之间的一切并提取回复号码

时间:2016-04-23 01:42:44

标签: php regex extract extraction text-extraction

请看下面的情况。

[reply="292"] Text Here [/reply]

我想要得到的是reply="NUMBERS"中引文之间的数字。我想将其提取到一个变量和[reply="NUMBER"] this text here [/reply]到另一个变量之间的文本。

所以对于这个例子:

[reply="292"] Text Here [/reply]

我想提取回复号码:292以及reply代码之间的文字:Text here

我试过这个:

\[reply\=\"]([A-Z]\w)\[\/reply]

但这仅适用于reply标记,之后无效。我怎么能这样做呢?

2 个答案:

答案 0 :(得分:1)

容易!

\[reply\=\"(\d+)\"](.*?)\[\/reply]

说明

  1. \d for digit
  2. +出现1次或多次指定字符。
  3. [\w\s]表示单词和空格中的任何字符(\s
  4. 然后将它应用于PHP:

    <?php                                                                       
      $str = "[reply=\"292\"] Text Here [/reply]";
      preg_match('/\[reply\=\"(\d+)\"]([\w\s]+)\[\/reply]/', $str, $re);
      print_r($re[1]); // printing group 1, the reply number
      print_r($re[2]); // printing group 2, the text
    ?>
    

    重要!!

    获取组值,而不是全部。无论如何你只需要一些。

答案 1 :(得分:1)

我留下了通用(。*),但您可以指定类似十进制(\ d +)的类型。

PHP:

$s = '[reply="292"] Text Here [/reply]';
$expr = '/\[reply=\"(.*)\"\](.*)\[\/reply\]/';
if(preg_match($expr,$s,$r)){
    var_dump($r);
}

的javascript:

s = '[reply="292"] Text Here [/reply]'
s.match(/\[reply=\"(.*)\"\](.*)\[\/reply\]/)
//["[reply="292"] Text Here [/reply]", "292", " Text Here "]