PHP で文字列を Unicode 文字の配列に分割する最適な方法は何ですか? 質問する

PHP で文字列を Unicode 文字の配列に分割する最適な方法は何ですか? 質問する

PHP で、文字列を Unicode 文字の配列に分割する最適な方法は何ですか? 入力が必ずしも UTF-8 ではない場合はどうでしょうか?

入力文字列内の Unicode 文字セットが別の Unicode 文字セットのサブセットであるかどうかを知りたいです。

mb_最初の 2 つの回答では関数のファミリに進んでいませんでしたが、なぜ関数のファミリに直接進まないのでしょうか。

ベストアンサー1

PCRE正規表現では「u」修飾子を使うことができます。パターン修飾子(引用) :

u (PCRE8)

この修飾子は、Perl と互換性のない PCRE の追加機能を有効にします。パターン文字列は UTF-8 として扱われます。この修飾子は、Unix では PHP 4.1.0 以降、win32 では PHP 4.2.3 以降で使用できます。パターンの UTF-8 の有効性は、PHP 4.3.5 以降でチェックされます。

たとえば、次のコードを考えてみます:

header('Content-type: text/html; charset=UTF-8');  // So the browser doesn't make our lives harder
$str = "abc 文字化け, efg";

$results = array();
preg_match_all('/./', $str, $results);
var_dump($results[0]);

使用できない結果が得られます:

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string ' ' (length=1)
  4 => string '�' (length=1)
  5 => string '�' (length=1)
  6 => string '�' (length=1)
  7 => string '�' (length=1)
  8 => string '�' (length=1)
  9 => string '�' (length=1)
  10 => string '�' (length=1)
  11 => string '�' (length=1)
  12 => string '�' (length=1)
  13 => string '�' (length=1)
  14 => string '�' (length=1)
  15 => string '�' (length=1)
  16 => string ',' (length=1)
  17 => string ' ' (length=1)
  18 => string 'e' (length=1)
  19 => string 'f' (length=1)
  20 => string 'g' (length=1)

しかし、このコードでは:

header('Content-type: text/html; charset=UTF-8');  // So the browser doesn't make our lives harder
$str = "abc 文字化け, efg";

$results = array();
preg_match_all('/./u', $str, $results);
var_dump($results[0]);

(正規表現の末尾の「u」に注意してください)

あなたが望むものを手に入れます:

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string ' ' (length=1)
  4 => string '文' (length=3)
  5 => string '字' (length=3)
  6 => string '化' (length=3)
  7 => string 'け' (length=3)
  8 => string ',' (length=1)
  9 => string ' ' (length=1)
  10 => string 'e' (length=1)
  11 => string 'f' (length=1)
  12 => string 'g' (length=1)

お役に立てれば :-)

おすすめ記事