Я боролся с Regex, чтобы соответствовать нескольким последовательным символам Unicode.
Сейчас у меня есть: [ -~£±§]*
Где -~£±§ – это по существу весь английский алфавит + все дополнительные символы (! @ # $% … и т. Д.) …
и [] * означает совпадение между нулем и неограниченным временем.
Но если моя тестовая строка – это что-то вроде:
ZÃ © lia Gattai
Тогда это не будет соответствовать …
Я прочитал некоторые другие темы, они предлагают использовать \ X и \ p {M} * и другие вещи. Я могу сопоставить один символ, используя эти методы, но не могу сопоставить несколько символов подряд.
Я решил использовать: [ -~£±§\X]* или [ -~£±§\p{M}]* сделал бы это, но не кубики.
Помощь приветствуется.
Спасибо всем!
Zélia Gattai – латинская интерпретация Zélia Gattai .
Вы не должны пытаться сопоставить такие последовательности символов вручную. Скорее используйте preg_match с поддержкой Unicode. Для этого есть флаг /u .
И для сопоставления нескольких букв Unicode вам просто нужно:
preg_match('/[\p{L}]+/u', $text);
Вам просто нужно убедиться, что ваш исходный текст правильно закодирован UTF-8. См. utf8_encode или utf8_decode в случае, если он был дважды закодирован ранее.
Кажется, ваша проблема заключается в том, что тестовая строка кодируется в UTF-8. В этом случае вам просто нужно включить модификатор «u», например preg_match('/^[\p{L}]*$/u','Ámos')