PHPで文字列抽出について質問です。


$body = '
<!--ここから-->
HTML
<!--ここまで-->

<!--ここから-->
HTML
<!--ここまで-->
';
※「HTML」の箇所は、HTMLのコードが入っていると想定します。

用途としては、file_get_contentsなどで特定のファイルを開いて、ファイル内のコメントの間を取得し、ヒットした数だけ配列に入れて処理する。と言ったのが目的です。


preg_match_all("/<\!--ここから-->(.*)<\!--ここまで-->/",$body,$array);

としてみたのですが、文字が抽出されません。どうすればいいのでしょうか?
PHPは5.2.8を使っています。

回答の条件
  • 1人2回まで
  • 登録:2009/04/06 18:22:45
  • 終了:2009/04/07 08:53:27

ベストアンサー

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812009/04/06 19:08:04

ポイント100pt
<?php
$body = '
<!--ここから-->
HTML1
<!--ここまで-->

<!--ここから-->
HTML2
<!--ここまで-->
' ;

// 最短マッチさせるためにパターンに「?」を加える
// 改行をメタ文字に含ませるために s指定子を加える
preg_match_all("/<\!--ここから-->(.*?)<\!--ここまで-->/s",$body,$array) ;

print_r($array) ;
id:kt26

出来ました!ずっと悩んでいたのですが、ご指摘いただいた「青色の箇所」が原因だったんですね。非常に参考になりました。

2009/04/07 08:52:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません