PHP | Регулярные вражения
Как правильно составить регулярное выражение для моей цели?
У меня есть строка:
Жанр1, жанр2, жанр3, жанр4
Мне надо пройти валидацию с помощью регулярного выражения. Я написал вот таоке:
[a-zA-Zа-яА-Яё-]+,
Все бы хорошо, но это работает только на примере строки. Если использовать реальные данные, например:
второй шанс, в этот же мир, перерождение, хитрость и обман
То, вместо массива:
[
'второй шанс'
'в этот же мир'
'перерождение'
'хитрость и обман'
]
Я получу:
[
'шанс'
'мир'
'перерождение'
'обман'
]
Надеюсь, я объяснил свою проблему максимально понятно.
UPD: необходимо получить ВСЕ, кроме пробелов ВОКРУГ запятых и самих запятых.
Ответы (1 шт):
Автор решения: dIm0n
→ Ссылка
Вот так вот:
[\p{L}-—]+(?:\h[\p{L}-—]+)*(?=,)?
Тест https://regex101.com/r/ojQ1Hy/3:
втор-ой шанс, в эт—от же мир, перерождение, хитрость и обман
Сгенерированный код:
$re = '/[\p{L}-—]+(?:\h[\p{L}-—]+)*(?=,)?/m';
$str = ' втор-ой шанс, в эт—от же мир, перерождение, хитрость и обман';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);