Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Убрать все символы, кроме латиницы, кириллицы и запятой - PHP

#php #регулярные_выражения


подскажите регулярку, которая должна вырезать любые символы, кроме запятой (оставаться
должны только кириллица и латинница). Сделал наброски , вроде работают , но запятую
не знаю как оставить.

$key_words=mb_strtolower($key_words);
$key_words=preg_replace("/[^a-zа-я\s]/iu","",$key_words);

    


Ответы

Ответ 1



Если должны остаться только буквы (кириллица + латиница) и запятая, то код должен иметь вид: preg_replace("/[^а-яёa-z,]/iu", '', $target); UPD: Стоит обратить внимание, что регулярное выражение выше соответствует только части кириллицы, а именно русскому алфавиту. Вообще, понятие кириллица существенно шире, и включает символы, используемые не только в современном русском алфавите, но и в ряде других славянских языков. Кириллические Unicode символы можно увидеть, например, здесь. Тоже самое, касается и латиницы. Формально, помимо символов английского алфавита (/[a-z]/i), туда входит еще множество других символов, например, ñ из испанского алфавита. Регулярное выражение выше, соответствует только символам английского алфавита, а не всем символам латиницы. UPD2: Если же вы действительно хотите оставить в строке символы, которые формально входят в латиницу или кириллицу, то вы можете использовать следующий код: preg_replace("/[^,\p{Cyrillic}\p{Latin}]/ui", '', $target); Это регулярное выражение оставляет очень большой набор символов (например, кириллические символы ѥѧѭ). Не думаю, что его вообще стоит использовать, но для тех, кто формально относится к понятиям латиница и кириллица, оно может оказаться интересным.

Ответ 2



Думаю, раз пользуетесь Юникодом, то и классы знаков нужно от туда использовать: $key_words=preg_replace("/[^\p{L},\s]/u","",$key_words); Тут оставляем \p{L} - все буквенные символы, , - запятую, \s - пробельные символы (для пробела нужно заменить на символ пробела). Тестовый пример https://regex101.com/r/wF4gZ2/1

Комментариев нет:

Отправить комментарий