0

通常、私はこれを行います。

$str = preg_replace('#(\d+)#', ' $1 ', $str);

utf-8になることがわかっている場合は、パターンに小文字の「u」修飾子を追加するとよいと思います。しかし、utf-8がネイティブ文字セットを使用した場合の2倍、場合によっては3倍のストレージスペースを使用するという報告があるため、アプリケーションをutf-8に制限しないようにしています。

したがって、私は私のお気に入りのpreg_関数から離れようとしています。

これまでのところ、ほとんどのことはかなり単純ですが、通常は「\d」などのpreg_の文字クラスを使用する置換に少し固執しています。

4

2 に答える 2

2

mb_convert_encoding内部で UTF-8 を操作するだけで済むように、ストレージ ラッパーを実装します。

( UTF-8を必須にして、みんなの手間を省くべきだと今でも思います。)

于 2009-10-09T04:18:19.437 に答える
1

UTF-8エンコーディングは、バイト値が127以下のエンコードされた出力のすべてが、常にそのバイト値に一致するASCII文字であり、マルチバイトシーケンスの一部ではないようなものだと思います。したがって、この状況では、エンコーディングがASCIIであるかのように見せ続けることができ、問題は発生しません(スペースと数字はすべてASCIIであるため)。

http://en.wikipedia.org/wiki/UTF-8の説明を参照してください。ここでは、マルチバイトシーケンスのすべてのバイトに最上位ビットが設定されていることが示されています(たとえば、すべて> 127)。

于 2009-10-09T04:35:45.643 に答える