• 締切済み

コードエラーが次のように出てしまいます。

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
  • 回答数1
  • ありがとう数0

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5082/13279)
回答No.1

var_dumpしてみたら $matches3[2] は存在しませんでしたよ。 代わりに $matches3[0][2] が存在していました。

関連するQ&A

  • 以下のコードでエラーが出てしまいます。

    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
  • スクリプトの中から使用されている変数と関数をリストする

    phpで書かれたスクリプトファイルの中から使用されている関数と変数をリストアップさせるようなことをしたいのですが、preg_matchを使うのが妥当でしょうか?また、正規表記はどんな感じがベストでしょうか?自分で試してみてもまったくへたくそでして... トホホ ぜひ皆さんの技量を拝見させてください ^^。 <?php $data = file_get_contents('~.php'); $functions = '/\s*\(*/i'; preg_match($functions, $data, $matches); print_r($matches); echo "<br>"; $variables = '/^\$[.+]/i'; preg_match($variables, $data, $matches2); print_r($matches2); echo "<br><br>"; echo $data; ?>

    • ベストアンサー
    • 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
  • URL からドメイン名

    <?php preg_match('@^(?:http://)?([^/]+)@i', "http://www.hogehoge.net/index.html", $matches); $host = $matches[1]; preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo $matches[0]"; ?> 上記だと、co.jpや ne.jpなどの場合うまく行きません。 正規表現もいまいちわかっていないのですが、 $host情報にco.jpなどを含む場合はこれでpreg_match()みたいな方法はないでしょうか?

    • 締切済み
    • PHP
  • PHPで正規表現を使った対象データを全て取り出した

    PHPで正規表現を使った対象データを全て取り出したいのですが、 echo ($matches); にしても「Array」しかでないし、、 var_dump($matches); で確認しても意図するものが取れておりません。。 正規表現で取りだしたい箇所は hrefの「100065」と「100066」です。 これはテスト用に作っているので2個ですが、本来は 30個程度対象箇所があります。 何か正規表現の記述が間違っていると思いますが、ご指摘願います。。 ・プログラム preg_match_all( "(/abcNo=(.*?)&ckFlg/)", $_getHTML, $matches); var_dump($matches); ・var_dumpしたブラウザの表示内容 array(2) { [0]=> array(0) { } [1]=> array(0) { } } 補足: $_getHTML は既にダミーで用意したHTMLを読み込んだものです。 $_getHTML で読み込んでいるファイルの中身です。 <html> <body> <a href="abcNo=100065&ckFlg=1"></a> <a href="abcNo=100066&ckFlg=1"></a> </body> </html>

    • ベストアンサー
    • PHP
  • 「include」と「file_get_contents」の違いがよく

    「include」と「file_get_contents」の違いがよく分かりません。 ネットで調べてみました。 ・「include」… 指定したファイルを読み込んで評価 ・「file_get_contents」… 指定したファイルの内容を全て読み込んで文字列として返す で、実際に試してみたのですが、「file_get_contents」の方がよく分かりません。 具体的には、下記を試すと、結果が、tt string(44) "" となるのですが、ttって何ですか? 評価をしないで文字列として返したということでしょうか? それでなんで tt になるのでしょうか? ▼hoge.php <?php $s = file_get_contents("test1.php"); var_dump($s); ?> ▼test1.php <?php echo ("1どうなるのかな"); ?>

    • ベストアンサー
    • PHP
  • file_get_contents 画像直URL

    file_get_contents($url);した際、画像の直URLがあったら、画像をローカルに保存して、URLを書き換えたいのですが、どうやればいいでしょうか? if(preg_match("/http:\/\//", file_get_contents($url))) { ?? } また、画像をローカルに保存って、PHPで出来るのでしょうか?

    • ベストアンサー
    • 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で文字を検索して取り込みたい。

    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
  • 正規表現でタグの中身を抜き出し

    <script language="php">・・・・</script> <script language=php>・・・・</script> <?php ・・・・ ?> の中身(・・・・の部分)をpreg_matchで抜き出したいと思っています。 preg_match("/<script language=?"php?">(*.)<\/script>/is" ,$p,$matches) と preg_match("/<php? (*.) ?>/is" ,$p,$matches) としましたがうまくいきません。どのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう