[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