2016-12-06 15 views
2

´のような特殊文字を使用してコーディングしていますが、/ u修飾子が必要ですがそれでも表示できません。私のコード:/u特殊文字の修飾子は正規表現では機能しません

$input = array("⋃","⋃","a","⋃","h"); 

$input = implode($input); 

$input = Normalizer::normalize($input); // unite binary code 

$pattern = '/⋃{2}/u'; 

$replacement = '$0|'; 

$output = str_split(preg_replace($pattern,$replacement,$input)); 
+0

UTF8エンコーディングでページを保存していますか? –

+0

'str_split'はマルチバイトセーフではありません。 'str_split()はマルチバイト符号化文字列を扱うとき文字ではなくバイトに分割されます.' https://3v4l.org/ZvKSO' preg_replace'は期待通りに機能します。 – chris85

+0

ここでの目標は何ですか?ダブルUsの後に '|'を追加し、Unicodeポイントに分割しますか? –

答えて

1

あなたはユニコード文字にUnicode文字列をトークン化する必要があるので、私はここにpreg_機能を使用することをお勧めします。

$input = array("⋃","⋃","a","⋃","h"); 
$impl = implode($input); 
$impl = preg_replace('/⋃{2}/u','$0|',$impl); 
preg_match_all('~\X~u', $impl, $tokens); 
print_r($tokens); 

PHP demoを参照。

まず、implode、その後、preg_replaceダブル|を追加し、任意のUnicodeの書記素と一致するように\Xパターンでpreg_match_allを使用します。

+0

私はその '\ X'メタキャラクターを見たことがありません。 – chris85

+1

Acc。 * '\ X' *はUnicode拡張書記素クラスタです*。 *そのページの*拡張された書記素クラスタ*を探してください。 –

+0

その後、どのような価値がありますか?配列として '$トークン'でも '$ impl'でも操作できないので、 –

関連する問題