マルチバイト文字列に「DEF ABC 123」と「abc123def」を交換してください
質問
通常、私はちょうどこれを行うだろう。
$str = preg_replace('#(\d+)#', ' $1 ', $str);
私はそれが私がパターンに小文字の「U」修飾子を追加すると、私は私は良いことだと思うUTF-8であることを分かっていた場合。しかし、理由はネイティブの文字が設定されている場合、それが取るであろうよりも2倍を服用し、ストレージ容量の3倍いくつかのケースでは、UTF-8のレポートを使用したのは、私はUTF-8への適用を制限しないようにしようとしています。
このように、私は離れて私のお気に入りのpreg_機能から滞在しようとしています。
ほとんどのものは、これまでかなりシンプルでしたが、私は通常、「\ D」とpreg_に文字クラスを使用したい代替品に少しこだわってます。
解決
ので、内部であなただけのUTF-8を操作する必要が mb_convert_encoding
を持つストレージ・ラッパーを実装します。
(私はまだあなたが UTF-8 に必要と皆を救うべきだと思います多くの問題。)
他のヒント
私は、UTF-8エンコーディングが127以下のバイト値でエンコードされた出力で何かが常にそのバイト値とマルチバイトシーケンスの決して一部に一致するASCII文字であるようなものであると思います。あなたはエンコーディングは、このような状況ではASCIIであるふりをし、問題を起こさないために続けることができるように(スペースと数字はすべてASCIIあるとして)。
http://en.wikipedia.org/wiki/UTF-8の説明を参照してください。 のどこに(例えば、あるすべての> 127)。
マルチバイトシーケンス内のすべてのバイトの最上位ビットセットを有することを示します所属していません StackOverflow