[PHP-users 4175] Re: fgetcsv 2 文字のデリミタ

Youichi Iwakiri php-users@php.gr.jp
Thu, 06 Dec 2001 18:48:50 +0900


いわきりです

uzi@kun.desu.ne.jp wrote in <20011206171300.E162.UZI@kun.desu.ne.jp>:
 > <> をデリミタとして使っているファイルを
 > fgetcsv を使って取り出そうとしているのですが、

そもそもCSV(comma separeted value)を読込む関数で
別物を読込もうとしている点がなにですが :-)

 > fgetcsv()は複数文字を使用したデリミタは対応していないので
 > しょうか?

対応してないです。

See ext/standard/file.c
 >/* {{{ proto array fgetcsv(int fp, int length [, string delimiter])
 >   Get line from file pointer and parse for CSV fields */
 >
 >PHP_FUNCTION(fgetcsv) {
 >	char *temp, *tptr, *bptr, *lineEnd;
 >	char delimiter = ',';	/* allow this to be set as parameter */

ふーん、delimiterはchar型なのね。

 >	case 3:
 >		if (zend_get_parameters_ex(3, &fd, &bytes, &p_delim) == FAILURE) {
 >			WRONG_PARAM_COUNT;
 >		}
 >		convert_to_string_ex(p_delim);
 >		/* Make sure that there is at least one character in string */
 >		if ((*p_delim)->value.str.len < 1) {
 >			WRONG_PARAM_COUNT;
 >		}
 >			/* use first character from string */
 >		delimiter = (*p_delim)->value.str.val[0];
 >		break;

渡ってきたstring型の変数の最初の1文字だけを使うと書いてあるようです。

#おーぷんそーすだとすぐに確認出来るところが利点だと思ってるんですけど