Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2017, 17:36   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Не могу составить регулярное выражение

Здравствуйте.
Мне нужно в строке оставить только цифры, и буквы русского, английского и опционально украинского алфавитов.
Попытался руками как умею (циклом по строке str_replace) - не хочет; массив символов/строк в явном виде слишком топорно.
Нагуглил функцию preg_replace, и мануалы по составлению регулярных выражений.
Собственно, нагородил
'[^0-9a-zA-Zа-яА-Я]'
Но спец-символы не удаляет, в частности пробелы и тире - точно не хочет.

Помогите плиз.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 18.10.2017, 22:39   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Мне нужно в строке оставить только цифры, и буквы русского, английского и опционально украинского алфавитов.
PHP код:
php -a
Interactive shell

php 
$str "abdg ичы - 42 _ Єї'ґ"// включая апостроф '
php var_dump(preg_replace('/[^a-zA-Zа-яА-Яа-щА-ЩЬьЮюЯяЇїІіЄєҐґ\'0-9]/ui''',$str ));
string(19"abdgичы42Єї'ґ"
php 
Пара полезных ссылок по теме:
https://ru.stackoverflow.com/a/440535
https://habrahabr.ru/post/123845/
Andkorol вне форума Ответить с цитированием
Старый 19.10.2017, 11:49   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Andkorol, спасибо, но почему то регулярка чистит всю строку ...

UPD: разобрался ... Код пишется в UTF-8, данные в базе лежат в CP1251, а файлы с обрабатываемыми строками - с произвольной (задаваемой) кодировкой, поэтому у меня жонглирование, а в этом случае - необходимо сначала сделать iconv в UTF-8 для строки, которую нужно обработать, обработать строку, а потом обратно в задаваемую.
iconv для регулярного выражения не даёт нужного эффекта, из этого вывод - (любой)_replace работает в UTF-8 / в кодировке кода.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 19.10.2017 в 12:27.
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение V-alterman Общие вопросы по Java, Java SE, Kotlin 0 04.12.2014 11:46
Помочь составить регулярное выражение Lohmatiyy Общие вопросы по программированию, компьютерный форум 4 15.08.2013 17:40
Не могу составить регулярное выражение hon PHP 0 24.06.2013 20:50
Составить регулярное выражение YHawk PHP 2 19.03.2012 06:56
правильно составить регулярное выражение. мимо Общие вопросы Delphi 0 04.07.2009 10:15