Регулярное выражение PHP проверяет буквы и испанский акцент
Как я могу добавить/импровизировать свой код, чтобы испанский акцент считался допустимым в дополнение к обычному алфавиту (a-z)
В моем коде есть следующее
public static function IsAlpha($s){
$reg = "#[^a-z\s-]#i";
$count = preg_match($reg, $s, $matches);
return $count == 0;
}
2 answers
Как указано в ответе на этот вопрос , вы можете сопоставлять символы с ударением, используя полную букву Свойство Юникода \p{L}
. Это включает в себя обычные символы a-z
наряду с акцентированными, поэтому замените a-z
в своем выражении следующим образом:
$reg = "#[^\p{L}\s-]#u";
Обратите внимание, что для этого вам понадобится модификатор UTF-8 u
после вашего закрывающего разделителя, как говорится в документах, такие типы символов Unicode " доступны, когда режим UTF-8 выбранный".
Я думаю, что вы можете использовать шестнадцатеричное представление каждой буквы:
<?php
function IsAlpha($sString)
{
$reg = "#[a-zA-Z\xE1\xE9\xED\xF3\xFA\xC1\xC9\xCD\xD3\xDA\xF1\xD1]+#i";
$count = preg_match_all($reg, $sString, $matches, PREG_OFFSET_CAPTURE);
return $matches;
}
echo '<pre>';
print_r(IsAlpha("abcdefgh ñ á é í ño 123 asd asáéío nmas asllsdasd óúfl ÑABDJÓ ÚñÍÉ"));
echo '</pre>';
Я не знаю, есть ли все буквы, но вы можете добавить больше с помощью этой ссылки .