0

文字列から (定義済みのパターンから) 特殊文字を抽出しようとしていますが、その文字列が逆疑問符で始まる場合、「一致」は最初の 2 文字を返します。例えば。:

$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」を返しますが、「¿」が予期されていました...問題がわかりません...

4

1 に答える 1

0

フラグ「u」(このページに記載されているように) を正規表現で使用してみてください。/[a-zäáàëéèíìöóòúùñç]/u

また、静的文字列で mb_convert_encoding を使用するよりも、ファイルを UTF-8 で保存することをお勧めします。

于 2012-06-20T15:01:18.297 に答える