[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярка - как сократить?
tazododu
Всем привет! Чувствую, что можно сократить запись сей регулярки, но не знаю как:(
Подскажите, кто знает, как поставить условие, что дефиса может и не быть.

$str = preg_replace('/^(0\-50\-)|(050\-)/ui', '(050) ', $str);




Спустя 2 минуты, 48 секунд (17.09.2011 - 15:13) tazododu написал(а):
ну и вообще, как можно сделать, чтобы не писать:
        
$str = preg_replace('/^(0\-39\-)/ui', '(039) ', $str);
$str = preg_replace('/^(0\-50\-)/ui', '(050) ', $str);
$str = preg_replace('/^(0\-63\-)/ui', '(063) ', $str);
$str = preg_replace('/^(0\-66\-)/ui', '(066) ', $str);
$str = preg_replace('/^(0\-67\-)/ui', '(067) ', $str);
$str = preg_replace('/^(0\-68\-)/ui', '(068) ', $str);
$str = preg_replace('/^(0\-91\-)/ui', '(091) ', $str);

а одним прегреплейсом?

Спустя 14 минут, 21 секунда (17.09.2011 - 15:28) vital написал(а):
$str = preg_replace('/^0(:?[-]?)([\d]+)\(:?[-]?)/ui', '$1 ', $str);

Спустя 2 минуты, 22 секунды (17.09.2011 - 15:30) Winston написал(а):
Вот так можно сократить
$str = preg_replace("#^(?:0-?(39|50|63|66|67|68|91))#iu", '($1)', $str);




Спустя 1 минута, 16 секунд Winston написал(а):
Для проверки
$str = '0-50';
$str = '050';

Спустя 3 минуты, 5 секунд (17.09.2011 - 15:33) vital написал(а):
Цитата (Winston @ 17.09.2011 - 14:30)
Вот так можно сократить
$str = preg_replace("#^(?:0-?(39|50|63|66|67|68|91))#iu", '()', $str);

не универсально

Спустя 2 минуты, 14 секунд (17.09.2011 - 15:35) tazododu написал(а):
Цитата (vital @ 17.09.2011 - 12:33)
Цитата (Winston @ 17.09.2011 - 14:30)
Вот так можно сократить
$str = preg_replace("#^(?:0-?(39|50|63|66|67|68|91))#iu", '()', $str);

не универсально


в моем случае это самое то! т.к. мне необходимо проверять только определенные коды телефонов

Спустя 3 минуты, 17 секунд (17.09.2011 - 15:39) tazododu написал(а):
еще вопрос, что означает в регулярке (?:0 ?

Спустя 55 секунд (17.09.2011 - 15:40) vital написал(а):
(:? )
служит для группироки не возвращающей результат. RTFM!

Спустя 5 секунд (17.09.2011 - 15:40) Winston написал(а):
Это значит, что совпадения не будут сохранены в первую пару скобок.

Спустя 5 минут, 1 секунда (17.09.2011 - 15:45) tazododu написал(а):

$str = '0-50-123-456';
echo preg_replace("#^(?:0-?(39|50|63|66|67|68|91|92|93|94|95|96|97|98|99))#iu", '($1)', $str);


вернул (50)-123-456, должен был (050) 123-456. что-то не так с вашим решением

Спустя 2 минуты (17.09.2011 - 15:47) Winston написал(а):
Поменяй вот так
'(0$1)', $str




Спустя 1 минута, 47 секунд Winston написал(а):
Даже так
$str = '0-50-123-456';
echo preg_replace("#^(?:0-?(39|50|63|66|67|68|91|92|93|94|95|96|97|98|99)-?)#iu", '(0$1) ', $str);

Спустя 3 минуты, 23 секунды (17.09.2011 - 15:50) tazododu написал(а):
Цитата (Winston @ 17.09.2011 - 12:49)
Даже так
$str = '0-50-123-456';
echo preg_replace("#^(?:0-?(39|50|63|66|67|68|91|92|93|94|95|96|97|98|99)-?)#iu", '(0) ', $str);

спасибо большое! вы мне очень помогли!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.