PHP正则表达式验证字母和西班牙口音

时间:2011-11-22 14:09:36

标签: php regex encoding

如何添加/即兴创作我的代码,以便除正常字母(a-z)外,西班牙语口音将被视为有效

我的代码中有以下内容

public static function IsAlpha($s){
  $reg = "#[^a-z\s-]#i";
  $count = preg_match($reg, $s, $matches);
  return $count == 0;
}

3 个答案:

答案 0 :(得分:20)

this question的答案中所示,您可以使用完整的 Letter Unicode property \p{L}来匹配重音字符。这包括常规a-z个字符以及带重音的字符,因此请将表达式中的a-z替换为:{/ p>

$reg = "#[^\p{L}\s-]#u";

请注意,要使用此功能,您需要在结束分隔符后使用UTF-8 modifier u,因为文档说当选择 UTF-8模式时,此类Unicode“字符类型可用< / EM>”。

答案 1 :(得分:1)

我认为你可以使用每个字母的hexadecimal representation

<?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>';

我不知道是否有所有字母,但您可以使用此link添加更多字母。

答案 2 :(得分:0)

您也可以使用T-Regx

pattern('[^\p{L}\s-]', 'u')->fails($s);