• 締切済み

htmlの一部を読み込んで表示する。

下の階層に有る自分のページをトップのindex.phpページに表示したいです。 《./abc/123.html》 ▼<div id="news">■~●</div>▲ 現在は123.htmlで指定した範囲を通り過ぎて▲の部分まで表示してしまいます。 ■~●だけを表示するにはどうしたらよいでしょうか? 今は下記のように書いています。 <?php $str = file_get_contents('./abc/123.html'); if (preg_match('!<div id="news">\s*(.*)</div>!s', $str, $res)){ print $res[1]; } ?> ご指導よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • duron
  • ベストアンサー率77% (73/94)
回答No.1

多分123.htmlの▼<div id="news">■~●</div>▲以降には 再び<div></div>が使われていると思います。 「.*」は任意の一文字以上で最長の部分がマッチする部分として取得されるので 最短マッチを表す「.*?」を指定すれば希望通り取得できると思います。 if (preg_match('!<div id="news">(.*?)</div>!s', $str, $res)){

mkoiuhbn
質問者

お礼

ありがとうございます。 お陰さまで余計な部分を表示せずにスッキリしました。 未熟者ですが今後とも宜しくお願い致します。

関連するQ&A

  • UTF-8サイトを取得しSJISに

    以下のPHPで指定のサイトを取得すると文字化けしてしまいます。 何処が悪いのか分かる方、ご指導お願い致します。 <?php $str = file_get_contents('http://esthe-cinderellaesthe.on.omisenomikata.jp/diary'); mb_convert_encoding($str,"SJIS","UTF-8"); if (preg_match('!<div id="content">(.*?)<div class="pr">!s', $str, $res)){ print $res[1]; } ?>

    • ベストアンサー
    • PHP
  • PHPで文字を検索して取り込みたい。

    PHPで文字を検索して取り込みたい。 %の文字が、何度か出現するソースなのですが そのソースの中にある50%のような全角で%の数値を 取り込みたいのです。 //////ソース//////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> /////////////////////// 下記のように実行しましたが 思うような結果は得られません。 <?php $str = file_get_contents('http://123456/index.html'); if (preg_match('!<table>\s*?(.*?)</table>!s', $str, $res)) $text = mb_convert_encoding($res[1],"shift-jis","UTF-8");preg_match_all("/-*[0-9]+/",str_replace(",","",$text),$matches); print ($matches[0][0]); ////////////////////////////// php初心者です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで外部サイトの一部を取得して表示

    こんにちは。 普通、外部ファイルの内容を取得して表示する場合、次のようにしますよね。 <?php echo file_get_contents("***URL***"); ?> それで、そのページの一部分、 例えば<div id="text">~</div>の内容を取得して、 file_get_contentsと同じように表示する方法はありますでしょうか。 取得する範囲はIDで指定できればと思います。 よろしくお願いします。

    • 締切済み
    • PHP
  • preg_match()の使い方

    PHPのpreg_match()でメールアドレスが対象のドメインに所属するかどうかをチェックするスクリプトを作成しようと以下を作成しました。 $ptn = preg_quote("abc.co.jp$"); $str = "user1@abc.co.jp"; $cnt = preg_match("/$ptn/", $str, $matches); 予定では上記で$cntに1が入ると考えていたんですが、 0が返ってきてしまいます。 preg_match()の使い方が誤っているのでしょうか? すいませんが、よろしくおねがいします。

    • 締切済み
    • PHP
  • PHPでheader情報がうまく表示できない

    ドコモ対応でXHTMLのヘッダー情報がうまく送れません。 PCからのテストで header('Content-Type: application/xhtml+xml'); をコード挿入すし、サイト表示の確認すると「ファイルのダウンロード 」ダイアログがでます。 header('Content-Type: application/xhtml+xml'); を入れずにテストするとダイアログはでません。 ・display.phpがメインページであくまでもskin.htmlをインクルードして置換しecho表示する感じなのですが・・・・・ 困っています。助けて下さい。 skin.html ----------------- <html> <body> <head> <!--%title--> </head> <body> コンテンツ </body> </html> ----------------- test.php -------------------------------------------------------------------------------------- 変数定義は省略 $html = file_get_contents($temp); $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ $html = str_replace( "<!--%title-->", $docomo, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } elseif(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ $html = str_replace( "<!--%title-->", $softbank, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } elseif(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ $html = str_replace( "<!--%title-->", $au, $html); header('Content-Type: application/xhtml+xml'); echo "$html"; } else{ $html = str_replace( "<!--%title-->", $other, $html); header('Content-Type: application/xhtml+xml'); echo preg_replace('/{.*?}/', '', $html); -------------------------------------------------------------------------------------- display.php ------------------------------------------ <?php $temp = "./skin.html"; require_once('./test.php'); ?>

    • ベストアンサー
    • PHP
  • PHPでWebページの特定部を取得したいのですが、上手くいきません。

    PHPでWebページの特定部を取得したいのですが、上手くいきません。 現在file_get_contentsを用いてURLを指定して取得し、preg_matchの引数にする方法で行っています。 また、preg_matchは以下のように用いています。 preg_match("/パターン(.*?)パターン/s", $html, $matches); print_rで$matchesを表示してみたところArray()のみ出力されます。 また、話が逸れて申し訳ないですが、上記とは別にfile_get_contentsを用いて動的にURLを指定して取得しているのですが、処理に時間がかかります。(約10秒) $wordをURLに組み込む変数として以下のように記述しています。 file_get_contents("http://…".$word."…(URLの続き)"); 以上の2点についてご教示願います。

    • ベストアンサー
    • PHP
  • PHPでURLのソースの中から数字の文字列を検索したいのですが

    PHPでURLのソースの中から数字の文字列を検索したいのですが <?php $str = 85%80%78%77%70%60%; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> この記述で、文字列から80%のような 全角文字で%の前の文字だけを抜き出せました。 そこでURLからデーターを抜き出すべく ////////ソース////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> 下記のように記述しましたが <?php $html_data = file_get_contents("http://www.1234.com/1234.html"); if (preg_match("/<table\s.*>([\s\S]*)<\/table>/i",$contents,$matches)){ $contents = $matches[1]; } $str = $html_data; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> しかし、動作しません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで<title>タグ取得の動作が非常に重い

    PHPで<title>タグ取得の動作が非常に重い $html = file_get_contents($url); if(preg_match( "/<title>(.*?)<\/title>/i", $html, $match)) { } 上記のような方法で一度に(1ページ内で)30サイトほどの<title>タグを取得すると、不可がかかり、表示までにかなり時間がかかってしまいます。 preg_match では重いのでしょうか。 それとも一度に30サイトはそもそも無理があるのでしょうか。。

    • ベストアンサー
    • PHP
  • 以下のコードでエラーが出てしまいます。

    Notice: Undefined offset: 2 in C:\xampp\htdocs\news2.php on line 18 Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\news2.php on line 19 プログラミング超初心者です。var_dumpしてみてもarray[2]は存在していたのですが・・・。 なぜこのようなエラーが出るのか、またどのように解決すればよいのでしょうか。わかる方、教えてください。よろしくお願いします。 <?php $newstop="http://headlines.yahoo.co.jp/hl"; $html=file_get_contents($newstop); $patern1='/http.*c=bus/'; preg_match($patern1,$html,$matches1); //var_dump($matches1); $newstop2=($matches1[0]); $html2=file_get_contents($newstop2); //echo($html2); //!ここまでで経済面のトップページはとってこれた //ここから、記事全文を拾う $fullpattern='/http.*all/'; preg_match_all($fullpattern,$html2,$matches3); $fullurl=($matches3[2]); ※ここが18行目 $fulltext=file_get_contents($fullurl);       ※ここが19行目 echo ($fulltext); //var_dump($matches3); ?>

    • 締切済み
    • PHP
  • php4でxmlを取得してページに表示

    http://www.phppro.jp/school/mashup/vol3/2 を参考に以下コードを書いたのですが、記事を1件表示させるだけでなく別の記事も複数件表示させたい場合はどうすれば良いのでしょうか。 また、<dc:type>番付</dc:type>のものだけを抜き出す方法も教えていただけると嬉しいです。宜しくお願い致します。 <?php function news(){ //XMLデータ取得用ベースURL $req = "http://polls.dailynews.yahoo.co.jp/rss.xml"; //XMLファイル内容を全て文字列に読み込む $buf = file_get_contents($req); preg_match_all('@<item>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<description>(.*?)</description>.*?<dc:subject>.*?</dc:subject>.*?<dc:type>(.*?)</dc:type>.*?</item>@s', $buf, $match, PREG_SET_ORDER); $ret .= "<h1><a href=\"".$match[0][2]."\">".$match[0][1]."</a></h1>"; $ret .= "<div>".$match[0][3]."【".$match[0][4]."】</div>"; return $ret; } echo news(); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう