preg_replace PHP и русские буквы

12
J
На сайте с 08.06.2006
Offline
844
1491

preg_replace("/[а-яА-Я]+/","",

Возвращает ����

Строка и файл скрипта в ютф8

LEOnidUKG
На сайте с 25.11.2006
Offline
1724
#1

preg_replace("/***91;а-яА-Я***93;+/u","",

u добавьте.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
J
На сайте с 08.06.2006
Offline
844
#2

LEOnidUKG, подскажите как регуляркой обозначить "любая последовательность символом в (), но только не [0-9]+"

LEOnidUKG
На сайте с 25.11.2006
Offline
1724
#3

Вот так:

(.*?)

S
На сайте с 30.09.2016
Offline
469
#4

Так: [^0-9]+

---------- Добавлено 06.03.2018 в 13:29 ----------

И ещё: если русские буквы, то "ё" не надо забывать. Если украинские - "є".

Ну и смотря по тому, для какой цели используется - там же ещё и знаки препинания могут быть...

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
J
На сайте с 08.06.2006
Offline
844
#5

Что то не то

значит есть строка "+7 (916) 1234567 (телефон горячей линии)"

Нужно последовательности букв и пробелов , которые находятся между ( и ) удалить.

п.с. строковыми не вариант по ряду причин

[umka]
На сайте с 25.05.2008
Offline
456
#6


$str='+7 (916) 1234567 (телефон горячей линии)';
$str=preg_replace('/\s*\([^\)]*\)$/','',$str);
echo $str;

Результат

+7 (916) 1234567
Лог в помощь!
J
На сайте с 08.06.2006
Offline
844
#7

[umka], вроде такая регулярка должна убивать и

(916)

я не правильно сформулировал ТЗ

и в итоге (номер справочно-консультационной службы) ну убивает

правильное ТЗ "удалять все последовательности в (), кроме последовательностей цифр"

/\s*\(^[[0-9]*]\)$/

не проходит

/\s*\(^[0-9]*\)$/

тоже

S
На сайте с 30.09.2016
Offline
469
#8

Естественно. Потому что в первом варианте вообще полная ахинея написана, а во втором варианте 2 ошибки: лишний доллар и неправильное расположение отрицания (см. выше).

Да и без пробельного символа можно обойтись.

J
На сайте с 08.06.2006
Offline
844
#9

Sitealert, ну так а как правильно? я уже 1000 вариантов перепробовал

S
На сайте с 30.09.2016
Offline
469
#10

Это всё от лени и невнимательности

$str=preg_replace('/\([^0-9]*\)/','',$str);
А можно и \s* включить, если пробел надо удалить. А можно и trim() сделать потом.
12

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