[PHP-users 35189] str_getcsvの妙な現象

Tomoo Nomura nomurat @ tmo.co.jp
2010年 5月 7日 (金) 15:35:20 JST


こんにちは。

php5.3から入った str_getcsvですが、妙な現象で悩んでいます。

php cliで以下のプログラムを実行すると
#!/usr/bin/php5
<?php
$b = array() ;
$a = "0,20100313,110,AA,EJ,1,イ1032664714,,,2010021, \"A\""  ;
$b = str_getcsv( $a, ",", '"' ) ;

for ( $i=0; $i<12; $i++ ) echo "i=$i b=$b[$i]\n";
?>
以下のように正常に出力します。
i=0 b=0
i=1 b=20100313
i=2 b=110
i=3 b=AA
i=4 b=EJ
i=5 b=1
i=6 b=イ1032664714
i=7 b=
i=8 b=
i=9 b=2010021
i=10 b=A
i=11 b=

ところが、ソースを次のようにphtmlに替え、
<html><body>
<?php
$b = array() ;
$a = "0,20100313,110,AA,EJ,1,イ1032664714,,,2010021, \"A\""  ;
$b = str_getcsv( $a, ",", '"' ) ;

for ( $i=0; $i<12; $i++ ) echo "i=$i b=$b[$i]\n";
?>
</body></html>
apache2で実行すると、
i=0 b=0 i=1 b=20100313 i=2 b=110 i=3 b=AA i=4 b=EJ i=5 b=1 i=6
b=1032664714 i=7 b= i=8 b= i=9 b=2010021 i=10 b=A i=11 b=
のようになり、半角カタカナのイが消えてしまいます。

php.iniのdiffは次のとおりです。
tom-lin @ root:/etc/php5/apache2# diff php.ini ../cli/php.ini
270c270
< memory_limit = 128M      ; Maximum amount of memory a script may
consume (128MB)
---
> memory_limit = 32M      ; Maximum amount of memory a script may
consume (32MB)
457c457
< ;magic_quotes_gpc = Off
---
> ;magic_quotes_gpc = On

mb_internal_encoding はともに UTF-8 です。
いったい何が原因でしょうか?
ヒントがあれば、よろしくお願いいたします。

野村
-- 
****** Nomura Technical Management Office Ltd. *****************
 Tomoo Nomura      nomura @ tmo.co.jp       http://www.tmo.co.jp/
    Phone: +81-78-797-0240 Fax: +81-50-3428-2033
 Worldwide Airline Timetable 'Flight Planner'
 European Electronic Timetable 'HAFAS'         ValueFax Support
****************************************************************


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