[PHP-users 27458] Re: 正規表現について

水沼寛喜 mizunuma @ m-design.com
2005年 11月 10日 (木) 18:35:22 JST


お世話になっております。水沼です。

nomoto様、お返事頂きありがとうございます。

mb(マルチバイト関数)使用時のmb_ereg_replace関数の(\w)*は、英数字と日本語に
も
対応しているのを確認済みです。

また、mb_ereg_replace関数使用時に、マッチング処理が
問題になる点について、ご指摘頂きありがとうございます。

検討してみます。

> -----Original Message-----
> From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp] On Behalf Of nomoto
> Sent: Thursday, November 10, 2005 6:24 PM
> To: PHP-users ML
> Subject: [PHP-users 27456] Re:正規表現について
>
>
>   nomotoです。
>
> >まつやま様ののソースコードで開発していこうと現在考えておりますが、
> >以下の様なテスト文字を作成して試したところ、英数字と記号を使用した場合、
> >うまく変換されないのですがどの様にしたらよろしいでしょうか?
>
> 開始終了で囲まれた文字列の抜き出し(パース)は単純な正規表現では
> フォーローしきれない問題が出てきます。
>
> (\w*)は([a-zA-Z0-9_]*)と同じなので[[abcdefgh]]ではマッチしますが
> 日本語や空白や記号が入ったらマッチしません。
>
> (.*)はどんな文字であっても最大長でマッチするので、日本語が
> 入っていてもOKですが [[テスト]]で[[す]] などにマッチさせた場合
> に、もっとも長くなる テスト]]で[[す という文字列にマッチします。
>
> (.+?)と?をつけると一番短くマッチするので、 [[テスト]]で[[す]]
> という文字は テスト の部分にマッチするので一番目的に近いように
> 思えますが、この場合でも、 [[テスト[[なん]]です]] とタグが
> 入れ子になっていると テスト[[なん の部分でマッチしてしまうので
> うまく行かないでしょうね。
>
> パース処理については、先頭からループ処理を駆使して開始タグが
> 何回出てきたか、終了タグが何回でてきたか、現在入れ子が何階層目
> なのか、などを順番に処理しないと正確には処理できません。
>
> 大変ですが良いサンプルがあるといいですね。頑張ってください。
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>




PHP-users メーリングリストの案内