[PHP-users 30252] Re: ファイルから指定した文字列の中間を切り抜くには??

"鈴木孝征 (Suzuki Takamasa)" takamasa @ thaliana.myhome.cx
2006年 9月 6日 (水) 09:43:49 JST


鈴木と申します。

> しかし、コードを見ていて思ったのが【$birth[1]】という点です。
> 気になって【print_r($birth)】を実行した結果
>
> Array ( [0] => ★1984/10/01★ [1] => 1984/10/01 )
>
> と表示されました。
> この★1984/10/01★は要らないのですがどうしても
> 取得してきてしまうのでしょうか??
>   

どうしても取得してきてしまうものです。mb_ereg関数の動作はpreg_matchや
ereg関数の動作とよく似ているので、そのへんのマニュアルを読むとわかると思
います。三番目の引数の0番目の要素にはマッチした文字列全体がはいるものです。

> 例えば【test123.txt】と言うファイルがあったとしてその中に
>
> 私の好きな動物は
> 1. - ネコ - です。
> 2. - 犬 - です。
> 3. - とら - です。
>
> と言うファイルがあったとして【. - 】【 - です】の間の
> 動物名だけを
> Array ( [0] => ネコ [1] => 犬 [2] => とら )
> とするいい方法はありませでしょうか??
>
>   

mb_eregだけでお望みのようにすることは難しいと思います。mb_eregで抽出した
後で好きなように配列を組み替えたらいいかと思います。

抽出したい項目がそのファイルの中に何回でてくるのか決まっているのであれ
ば、正規表現をその数に合わせて用意して、array_shift関数で最初の項目をの
ぞいてはどうでしょうか。回数が決まっていないのであれば繰り返しmb_ereg関
数を使ってその度に別の配列に抽出した文字列を代入しておけばいいと思います。



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