我有一个这样的字符串:
$string1="asdfgsdfgsdf[quote=user9 postID=345]sdfgsdfgsdfgdsfg";
我希望将"quote="
和" "
之间的所有字符转换为$ chars1,然后将"postID="
和" "
之间的字符转换为$ chars2,最后我想更改所有符号从(包括)"[quote"
到"]"
上的其他字符串$string2='_test_'
;
所以最后我应该得到
$chars1="user9";
,
$chars2="345";
,
并转换了$ string1
$string1="asdfgsdfgsdf_test_sdfgsdfgsdfgdsfg";
我该怎么做?
答案 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"