Я пытаюсь написать PHP-скрипт для некоторой проверки формы. Одним из требований к текстовому вводу является то, что он должен содержать хотя бы один символ Юникода. Я написал эту функцию, чтобы проверить это.
function containsLetters($str)
{
return preg_match('/\p{L&}+/', $str);
}
Казалось, что это отлично работает для первых двух тестовых примеров, которые я написал для этого. Но затем я попытался проверить его на строку "\n", ожидая ложного результата. Вместо этого он, похоже, полностью разбился.
Я тоже пробовал это:
var $test = preg_match('/\p{L&}+/', "\n");
var_dump($test);
который также не работает.
Во второй попытке вы пытаетесь назначить вызов переменной, не...
var_dump(preg_match('/\p{L&}/', "\n")); // int(0)
Кроме того, вы можете просто использовать \pL
вместо этого и обязательно включить модификатор u
(unicode)...
function containsLetters($str) {
return (bool) preg_match('~\pL~u', $str);
}