正则表达式替换两个单词

时间:2013-05-17 14:21:48

标签: php regex

我想在两个字符之间替换一组字符串,例如&[]以及其他值。例如,我的字符串就像&yyyyyyy[]=&gggggg[]=&bbbbb[]=。现在我想用“name”替换&[]之间的字符串,使其看起来像&name[]=&name[]=&name[]=。现在该怎么做?

4 个答案:

答案 0 :(得分:3)

$string = '&yyyyyyy[]=&gggggg[]=&bbbbb[]=';
$result = preg_replace('/&([a-zA-Z0-9]+)\[\]/', '&name[]', $string);

// Outputs: &name[]=&name[]=&name[]=

答案 1 :(得分:0)

preg_replace('/&([a-zA-Z0-9]+)\[\]/', '&name[]', "&yyyyyyy[]=&gggggg[]=&bbbbb[]=");

答案 2 :(得分:0)

这样的事情应该这样做..

使用preg_replacepreg_replace_callback

\&(.*?)\[]

这应匹配字符和字母之间的字符串;和字符[]

preg_match_all('#\&(.*?)\[]#','&yyyyyyy[]=&gggggg[]=&bbbbb[]=',$matches);
array(2) { [0]=> array(3) { [0]=> string(10) "&yyyyyyy[]" [1]=> string(9) "&gggggg[]" [2]=> string(8) "&bbbbb[]" } 
           [1]=> array(3) { [0]=> string(7) "yyyyyyy" [1]=> string(6) "gggggg" [2]=> string(5) "bbbbb" } }

这个正则表达式是我能得到的最接近的。希望能帮助到你。

答案 3 :(得分:0)

这应该做你想要的,并且应该匹配&和[]不是&,[]或=

$subject = '&yyyyyyy[]=&gggggg[]=&bbbbb[]=';    
$pattern = '/&([^\[\]\&=]+)\[\]/';
$replacement = '&name[]';
echo preg_replace($pattern, $replacement, $subject, -1);