Почему не срабатывает preg_replace

Рейтинг: 0Ответов: 2Опубликовано: 26.03.2015
$str = '[p1=>1][p2=>2][p3=>3][p4=>4]';
$str = preg_replace('\[p2=>\w+[a-zA-Z0-9_]]','[p2=>333]', $str);
echo $str;

Подскажите, почему не происходит замена?

Ответы

▲ 2Принят

Во-первых, нет крайних символов, определяющих регулярное выражение.
Во-вторых, квадратные скобки экранировать надо, это же не символьный класс.
В-третьих, зачем \w?

<?
$str = '[p1=>1][p2=>2][p3=>3][p4=>4]';
$str = preg_replace('!\[p2=>[a-z0-9_]\]!i','[p2=>333]', $str);
print $str;
▲ 1
$str = preg_replace('/\[p2=>\d+\]/','[p2=>333]', $str);