PHP Regex для нескольких символов Unicode

Я боролся с 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')