170 похожих чатов

Доброго вечера, может мне кто-то объяснить, почему так неожиданно работает

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

Куда скобки делись? Кто встречался?

11 ответов

25 просмотров

вы на https://regex101.com/ отлаживать пробовали? очень удобно

Потому что надо использовать правильные кавычки, а не всегда двойные. Проверяй. preg_replace('/([\s\pP])(495)([\s\pP])/ui','${1}...${3}','+7 (495) 359-02-47')

Dimases
огромное спасибо. понял =)

ну и при разработке включай вывод ВСЕХ ошибок. Так ты бы увидел варнинги о несуществующих переменных.

Dimases- Автор вопроса
Владимир Блискун
ну и при разработке включай вывод ВСЕХ ошибок. Так...

может еще знаете, ловлю пробел после всех чисток в начале одной строки. чищу 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); то он тоже прибивается. Что за чудеса?

Dimases
может еще знаете, ловлю пробел после всех чисток в...

ты меняешь 1 и более пробелов на 1. У тебя в начале строки остается 1 пробел. Что не так?

Dimases
а trim?

скинь свой текст файлом мне в личку

Dimases- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
22
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта