人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの「preg_match_all」に関する質問です。あるテキストから「●●●1234567,名前様●」という部分を抜き出したいので以下のように記述しましたが、条件に合致する一番最後の「●●●1234567,名前様●」しか
画面上に表示されません。

どのように書きかえればよいですか?


<?php

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');


$fp = fopen('test.txt', "r");
while( ! feof($fp) ) {
$buffer = fgets( $fp, 4096 );

}
fclose ($fp);


preg_match_all('/●●●(.*?)様●/s',$buffer,$array) ;


$a=0;
while ($a <= 10) {
echo $array[1][$a] . "<br>";
$a++;
}

?>


●質問者: ダビスタウイポスト
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo FP PHP test txt
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

$buffer = fgets( $fp, 4096 );

ここが間違っています。これでは最後の1行しか読み込みません。


また、念のため、preg_match_all を UTF-8 対応にするため、u オプションを付けておくといいでしょう。

というわけで、改善したソースを下記に示します。


<?php
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

$fp = fopen('test.txt', "r");
$buffer = '';
while( ! feof($fp) ) {
 $buffer .= fgets( $fp, 4096 );
}
fclose ($fp);

preg_match_all('/●●●(.*?)様●/us',$buffer,$array) ;

$a=0;
while ($a <= 10) {
 echo $array[1][$a] . "<br>";
 $a++;
}
?>
◎質問者からの返答

あーなるほど。データの読み込みで「.」で足しこんでなかったからうわがかれて、最後の行だけ残ったわけですね。

助かりました。テスト環境でも上手く行ったので、これでクローズとします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ