preg_replace, вот регулярочка:
preg_replace("/([\s\pP])(495)([\s\pP])/ui","$1...$3","+7 (495) 359-02-47") она делает все правильно:
+7 (...) 359-02-47
но на деле вместо точек будут цифры, то есть: "$1495$3"
в мануале по этому четко сказано - использовать ${1} и ${3}, ок, делаю:
preg_replace("/([\s\pP])(495)([\s\pP])/ui","${1}...${3}","+7 (495) 359-02-47")
и получаю:
+7 ... 359-02-47
Куда скобки делись? Кто встречался?
вы на https://regex101.com/ отлаживать пробовали? очень удобно
Потому что надо использовать правильные кавычки, а не всегда двойные. Проверяй. preg_replace('/([\s\pP])(495)([\s\pP])/ui','${1}...${3}','+7 (495) 359-02-47')
огромное спасибо. понял =)
ну и при разработке включай вывод ВСЕХ ошибок. Так ты бы увидел варнинги о несуществующих переменных.
может еще знаете, ловлю пробел после всех чисток в начале одной строки. чищу strip_tags, после этого от лишних символов и повторяющихся пробелов: $v=str_replace(["\r","\n","\t"]," ",$v); $v=preg_replace("/\s{1,}/u"," ",$v); return trim($v); но все равно на дампе у одной только строки вижу: " Выражаю свое согласие..." UTF-8 пробелы чистятся, но что это? причем, если делаю $v=preg_replace("/\s{1,}/u","",$v); то он тоже прибивается. Что за чудеса?
ты меняешь 1 и более пробелов на 1. У тебя в начале строки остается 1 пробел. Что не так?
скинь свой текст файлом мне в личку
{1,} вполне можно заменить на +
можно, я так привык просто
Обсуждают сегодня