[PHP-users 10854] Re: 改行以降のmberegでのチェック
Moriyoshi Koizumi
php-users@php.gr.jp
Wed, 16 Oct 2002 00:57:44 +0900
小泉です。
ご報告ありがとうございます。これは一種のバグだと思います。
[対処法 1] mb_ereg_match() を使う。
この用途であれば、mb_ereg_match() も使えます。
<?php
$a="aaa\n<>";
var_dump( mb_ereg_match("^[^><]+$",$a,"s") );
?>
のように書き換えると上手くいくはずです。
[対処法 2] cvs 版を使う、または 4.3.0 のリリースを待つ
http://snaps.php.net/ などから cvs 版を取得し、
今のところは、次のようにコードを書き換えるとうまくいくはずです。
<?php
mb_regex_set_options( "s" );
$a="aaa\n<>";
var_dump( mb_ereg("^[^><]+$",$a) );
?>
それでは。
makoto_harita@ma2.justnet.ne.jp wrote:
> 播田です。
> apache 1.3.27
> php 4.2.3 国際化版
> にて、
> mbstring.internal_encoding = Shift_JIS
> mbstring.http_input = auto
> mbstring.http_output = pass
> mbstring.detect_order = auto
> mbstring.substitute_character = auto
> mbstring.script_encoding = Shift_JIS
>
> の設定で、携帯にて使用したいため
> スクリプトをすべてSJISで統一しています。
> この環境で
>
> <?php
> $a="aaa\n<>";
>
> if(mbereg("^[^><]+$",$a)){
> echo "TRUE";
> }else{
> echo "FALSE";
> }
> ?>
> を行うと
> True
> となります。
> $a="aaa<>"
> だと、
> False
> が表示されます。
> eregに置き換えてみたのですが
> eregだと
> \nあろうとなかろうと
> ちゃんとFalseが表示されます。
>
>
> どうも、改行以降のチェックがされていないようなのですが、
> アドバイス等ありましたらよろしくお願い致します。
> ※日本語での、複数行の文字をmberegで処理したいと思っています。
>
> --
> makoto_harita@ma2justnet.ne.jp
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users