Помогите с регулярными выражениями

engh
На сайте с 24.07.2007
Offline
78
465

Необходимо чтобы конструкции вида {1:2:3} заменялись моим кодом

Пишу:

$text=preg_replace("(\d)\:(\d)\:(\d)\}/", "my_code", $text);

Если такая конструкция в переменной $text встречается один раз, то все норм, но если их две, то знак } берется из второй конструкции, и на my_code заменяется весь участок от первой до второй конструкции вместе с тем кодом, который стоит между ними! Как это исправить? нужно чтобы конструкции вида {1:2:3} заменялись по отдельности :)

enough 4 U..
dlyanachalas
На сайте с 15.09.2006
Offline
693
#1

Нехватает открывающего слеша и звёздочек:

$text=preg_replace("/{(\d*)\:(\d*)\:(\d*)}/", "my_code", $text);
engh
На сайте с 24.07.2007
Offline
78
#2
dlyanachalas:
Нехватает открывающего слеша и звёздочек:

Спасибо, слэш просто забыл сюда вставить, а вот звездочки помогли :)

Коля Дубр
На сайте с 02.03.2005
Offline
153
#3

$text=preg_replace("/{(\d*)\:(\d*)\:(\d*)}/", "my_code", $text);
1. Зачем цифры сохранять? Для описанной задачи скобки лишние.

2. Ваш вариант найдет и подстроку типа {::} - не совсем то.

Я бы предложил скорее так:

$text=preg_replace("/{\d+:\d+:\d+}/", "my_code", $text);
Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий