[PHP-users 35038] Re: mb_ereg と preg_match の動作の違い

石田 武士 ishida.tak @ gmail.com
2010年 3月 2日 (火) 18:52:37 JST


はじめまして、石田です。
普段からpregしか使わないもので前半のは分からんのですが、
後半のは以下のようなコードでいけそうな気がします。

preg_match_all( '#\d+#', '<1,2,3>', $tmp ) && var_dump( $tmp[0] );

On Tue, 02 Mar 2010 18:36:54 +0900, <shige02 @ mac.com> wrote:

> こんにちは。重松です。
>
> $ cat x.php
> <?php
>
> mb_internal_encoding('UTF-8');
>
> var_dump(mb_internal_encoding());
>
> $smk = '沙摩柯';
> $smk2 = '沙摩柯しゃまかあいうえお';
>
> var_dump(preg_match("/$smk/", $smk2));
>
> var_dump(mb_ereg($smk, $smk2));
>
> ?>
>
> で、
>
> $ php x.php
> string(5) "UTF-8"
> int(1)
> bool(false)
>
> という風に、preg_match は期待通り、mb_ereg が期待と異なる動作をします。
> 念のため、
> $ nkf -w --overwrite x.php
> として見ましたが、結果は同じ。
> 何か勘違いしているのでしょうか?
>
> Mac OS X 10.6.2 です。
> $ php -v
> PHP 5.3.0 (cli) (built: Jul 19 2009 00:34:29)
> Copyright (c) 1997-2009 The PHP Group
> Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
> それと、'<1,2,3>' から 1 2 3  
> それぞれが入った配列にしたいのですが、split('<1,2,3>', '[<>,]')  
> だと、頭と最後に空の余計なものが入ってしまうわけですが、一発で、1 2 3  
> と切るにはどうすればいいんでしょうか?
>
> よろしくお願いいたします。
>


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