[PHP-users 3149] Re: textarea の内容をCSV に書きたいが
Osamu Shigematsu
php-users@php.gr.jp
Fri, 26 Oct 2001 17:14:21 +0900
重松です。ほとんど重箱の隅つつきですが、
on 01.10.26 4:51 PM, m.yoshida at yoshida@glovix.com wrote:
> $off_str = mbereg_replace(, "(\r|\r\n|\n)","\\n",$str,"i");
> ↑**
> こうですね・・・
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/php-book/supplement.html
int mbereg_replace(string pattern, string replacement, string str [, string
option])
とありますから、引数の数が合わないです。
また、正規表現って、普通は書いた順にマッチを試みると思いますし、一般的な
User Agent はサーバと同じ文字コード体系 (改行コードも) で post してきますか
ら、たとえば、Shift_JIS, CR+LF ならば、\r\n?|\n と書いた方が高速に動くと思い
ます。多分。
それと、おそらく、正規表現のコンパイル時に多少の最適化はかかると思いますが、
\r|\r\n|\n と書くよりも、\r\n?|\n と書けば、\r にマッチしたときに、次に \n
があってもなくても良くなり、遷移状態がわかりやすいので、無駄の少ない
automaton が作成され、エンジンの実装を問わずに速いと思います。試してないです
けど。
それから、i ですが、指定しても、意味はまったくありません。マッチさせようとす
る文字列には、大文字、小文字の組み合わせがある文字がないので。正規表現をコン
パイルするときに遅くなるか、実装によっては、マッチする際にも遅いかも知れませ
ん。
また、0x20 未満の文字は、私の記憶が確かならば、マルチバイト文字 (Shift_JIS,
UTF-8) の 2 バイト目 (以降) に来ることはないので、mbereg ではなくて、eregi
でも問題ないと思います。EUC の場合は、、、多分こなかったと思うんですが、手元
に CJKV がないのでわかりません、ゴメンなさい。
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp