Регулярное выражение PHP не соответствует символам с акцентом

Вопрос:

Я пытаюсь создать регулярное выражение, совместимое с PHP, которое позволит использовать акцентированные символы, например «ü». Насколько я понимаю, оператор \p {L} должен это сделать. Что я до сих пор:

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

Это должно позволить строку, которая может начинаться с любых символов az, 0-9 и с акцентом, а за ними последует любое количество az, 0-9 и акцентированных символов, а все выражение нечувствительно к регистру.

Однако при тестировании при использовании символов, таких как «ü» в любом месте строки, проверка не выполняется. Я убедился, что переданное значение закодировано с помощью utf8, используя:

utf8_encode($value)

Однако он все еще терпит неудачу. Какие-либо предложения?

заранее спасибо

————————-Редактировать———————— —

После тестирования на другом сервере также работает оригинальный шаблон.

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

Проблема связана с настройкой сервера. Я выложу решение, когда найду.

Лучший ответ:

Я думаю, это может сработать для вас:

$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';

Я проверил следующий код, чтобы проверить шаблон:

$str = "patinação";
$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';
if (preg_match($pattern, $str, $matches)){
    echo $matches[0];//output: patinação
}

Оцените статью
TechArks.Ru
Добавить комментарий