preg_match匹配两个字符时应该只匹配一个字符

时间:2012-04-24 17:04:08

标签: encoding preg-match

我正在尝试从字符串中提取特殊字符(从预定义的模式中提取),但是当该字符串以反转的问号开头时,“matches”会返回前两个字符,包括非特殊字符。例如:

$string = '¿hola?';

$string2 = mb_convert_encoding($string, 'UTF-8');
$regex =  mb_convert_encoding('/[a-zäáàëéèíìöóòúùñç]/', 'UTF-8');

if(preg_match($regex, $string2, $matches, PREG_OFFSET_CAPTURE))
{

  //--> We pick the special characters into "$resultado1":
  $resultado1 = mb_substr($string, 0, $matches[0][1],'UTF-8');

  return $resultado1;
}

在这个例子中,函数返回“¿h”,但预期“¿”......我无法弄清楚问题......

1 个答案:

答案 0 :(得分:0)

尝试在正则表达式中使用“u”标志(如this page中所述):/[a-zäáàëéèíìöóòúùñç]/u

更喜欢以UTF-8保存文件,而不是在静态字符串上使用mb_convert_encoding。