正则表达式获取字符串的几个部分,然后用新字符串

时间:2018-05-01 10:31:35

标签: php regex

我有一个这样的字符串:

$string1="asdfgsdfgsdf[quote=user9 postID=345]sdfgsdfgsdfgdsfg";

我希望将"quote="" "之间的所有字符转换为$ chars1,然后将"postID="" "之间的字符转换为$ chars2,最后我想更改所有符号从(包括)"[quote""]"上的其他字符串$string2='_test_';

所以最后我应该得到 $chars1="user9";$chars2="345";,  并转换了$ string1

$string1="asdfgsdfgsdf_test_sdfgsdfgsdfgdsfg";

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以将preg_replace_callback与带有2个捕获组的正则表达式一起使用:

$string1 = "asdfgsdfgsdf[quote=user9 postID=345]sdfgsdfgsdfgdsfg";

$string1 = preg_replace_callback (
   '/\[quote=(\S*)\s+postID=([^]\s]*)[^]]*]/',
   function($m) use(&$chars1, &$chars2) {
      $chars1 = $m[1];
      $chars2 = $m[2];
      return "_test_";
   },
   $string1
);

var_dump($string1, $chars1, $chars2);

<强>输出:

string(34) "asdfgsdfgsdf_test_sdfgsdfgsdfgdsfg"
string(5) "user9"
string(3) "345"