Я хочу заменить набор строк между двумя символами say &
и []
с некоторым другим значением. Например, моя строка похожа на &yyyyyyy[]=&gggggg[]=&bbbbb[]=
. Теперь я хочу заменить строку между &
и []
на «имя», чтобы она выглядела как &name[]=&name[]=&name[]=
. Теперь как это сделать?
$string = '&yyyyyyy[]=&gggggg[]=&bbbbb[]='; $result = preg_replace('/&([a-zA-Z0-9]+)\[\]/', '&name[]', $string); // Outputs: &name[]=&name[]=&name[]=
preg_replace('/&([a-zA-Z0-9]+)\[\]/', '&name[]', "&yyyyyyy[]=&gggggg[]=&bbbbb[]=");
Что-то вроде этого должно это сделать ..
используя preg_replace
или preg_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" } }
это регулярное выражение является самым близким, которое я могу получить. Надеюсь, поможет.
Это должно делать то, что вы хотите, и должно соответствовать чему-либо между & и [], которое не является &, [] или =
$subject = '&yyyyyyy[]=&gggggg[]=&bbbbb[]='; $pattern = '/&([^\[\]\&=]+)\[\]/'; $replacement = '&name[]'; echo preg_replace($pattern, $replacement, $subject, -1);