[PHP-users 3150] Re: textarea の内容をCSV に書きたいが

m.yoshida php-users@php.gr.jp
Fri, 26 Oct 2001 17:34:41 +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 と書いた方が高速に動くと思
い
> ます。多分。

引数の書き方違いましたか・・・(;´▽`A
御恥ずかしい限りです。
今度から良く確認して投稿します。

> それと、おそらく、正規表現のコンパイル時に多少の最適化はかかると思います
が、
> \r|\r\n|\n と書くよりも、\r\n?|\n と書けば、\r にマッチしたときに、次に \n
> があってもなくても良くなり、遷移状態がわかりやすいので、無駄の少ない
> automaton が作成され、エンジンの実装を問わずに速いと思います。試してないで
す
> けど。
>
> それから、i ですが、指定しても、意味はまったくありません。マッチさせようと
す
> る文字列には、大文字、小文字の組み合わせがある文字がないので。正規表現をコ
ン
> パイルするときに遅くなるか、実装によっては、マッチする際にも遅いかも知れま
せ
> ん。
>
> また、0x20 未満の文字は、私の記憶が確かならば、マルチバイト文字
(Shift_JIS,
> UTF-8) の 2 バイト目 (以降) に来ることはないので、mbereg ではなくて、eregi
> でも問題ないと思います。EUC の場合は、、、多分こなかったと思うんですが、手
元
> に CJKV がないのでわかりません、ゴメンなさい。
>

なるほど、処理速度などを考慮したら
結果は同じでも様々な手段があることがわかりました。
今まであきらかに無駄なコーディングで無い限り
あまり気にしませんでした。
以後気をつけたいと思います。
ありがとうございました。