外部XMLファイルからURLを抽出してテキストリンクリストを作成するPHPのソースコードを作成したい

このQ&Aのポイント
  • 外部のXMLファイルからURLを抽出し、テキスト形式でリストにするPHPのソースコードを作成したい。
  • サイトマップのテキストリンクを作成するために、外部XMLファイルからURLを抽出するPHPのソースコードを作成したい。
  • 大量のURLを一覧表示するテキストリンクリストを作成するために、外部XMLファイルからURLを抽出するPHPのソースコードを作成したい。
回答を見る
  • ベストアンサー

初書き込みです。

初書き込みです。 こんにちは。 これから、質問させていただきますので、よろしくお願いします。 外部のXMLファイルから、<loc></loc>の中にあるttp://部分を抽出して、テキスト形式でリストにするPHPをプログラミングしたいと考えてます。 グーグルに送信するサイトマップのテキストリンクを作るため・・・です。 サイトマップのテキストリンクを作るCGIならありましたが、XMLからttp://~のみ抽出するCGIは、ありませんでした。 1つ1つURLを打ち込め!っていうお方は当然いらっしゃるかと思います。 少ないファイル数ならば、それでも問題ないのですが、5万8000個以上ありますので、大変時間がかかり、コストもかかります(汗) そこで、PHPのソースでアドレス部分を抽出できないか思い、質問させていただきました。 参考にしたURL:http://okwave.jp/qa/q3972225.html 上記の質問では、『アルファベットA~Zと数字7文字』のjpg形式の画像URLを抽出するというものでした。 今回、私が組みたいのは、 外部XMLファイル内のURL⇒ttp://(hを省略してます)部分をひたすら検索し、テキストで一覧表示させるソースです わかりにくくてすみません。 理想としては、サイトマップ送信用のテキストリンクリストみたいな形になればいいと思ってます 自分自身の技術向上のため、サイトマップ送信用ファイルの作成作業効率を早くするためにこのPHPは必要です・・ もし、このソースを組める方がおりましたら、サンプルソースでも十分ですので、よろしくお願いいたします。

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

XMLの構造が、 <root> <loc>http://example.com</loc> ...... </root> という構成に成っていた場合、 <?php $doc = new DOMDocument(); //PHP標準のDomパーサのインスタンス取得 $doc->load('./linklist.xml'); //XMLファイルを読み込む $elements = $doc->getElementsByTagName('loc'); //Javascriptのようにタグ名でlocをすべて得る。 //ここから先は、とりあえずファイルにaタグで囲ったURLの一覧を取得する処理にしときました。 $fp = fopen('./result.html', 'w'); foreach($elements as $element){ fputs($fp, '<a href="'.$element->nodeValue.'">'.$element->nodeValue.'</a>'."\r\n"); } fclose($fp); ?> これを適当に改変すれば、一覧作成も可能かと思います。

koichi504
質問者

お礼

なるほど・・・。 大変参考になりました。 この回答を参考にして、いろいろ試行錯誤してみたと思います。 ありがとうございました。

関連するQ&A

  • sitemap.xmlファイル自動生成のPHP改造

    htmlにてサイト制作していて 1つのディレクトリに1つのindex.htmlというサイト構造を採用しています。 http://fstyle.adaga.org/archives/2005/12/google_php.html 上記URLのsitemap.xmlを自動生成してくれるPHPプログラムを 自サーバにアップして利用しています。 オンライン上でサイトマップを自動生成してくれる所も知っていますが 上記のプログラムが使いやすいので利用し続けています。 生成されるsitemap.xmlファイルは、index.html以外のファイル名 【例えばsample1.htmlやsample2.html】の場合だと、 <url> <loc>http://www.*****.com/ディレクトリ名/sample1.html</loc> <priority>0.5</priority> </url> <url> <loc>http://www.*****.com/ディレクトリ名/sample2.html</loc> <priority>0.5</priority> </url> といった具合になります。index.htmlだと、 <url> <loc>http://www.*****.com/ディレクトリ名/index.html</loc> <priority>0.8</priority> </url> と、index.htmlの場合だと【if文】を使って <priority>の数値が変わるようにプログラムされています。 しかし末尾に、【index.html】と記載されているとグーグルが正確に sitemap.xmlを読み込んでくれないので、 <url> <loc>http://www.*****.com/ディレクトリ名/</loc> <priority>0.8</priority> </url> といった具合で末尾の【index.html】の表記を省略させたいのです。 自動生成PHPファイルのソースを確認すると、 if ($fp){ if (strstr($fileName , "index")) $lastmod = "<changefreq>daily</changefreq>\n <priority>0.8</priority>"; else $lastmod = "<lastmod>{$time}</lastmod>\n <priority>0.5</priority>"; $temp = <<<EOF と記述されている箇所があるので、ここを改造すれば 出来そうな気がするのですが、index.htmlの記載を省略する事は可能なのでしょうか。

    • ベストアンサー
    • PHP
  • サイトマップインデックスを多段階にしたい

    ページ数が毎日変わる(増減する)サイトを作成しているのですが、 サイトマップの数も毎日変わってしまうため、 サイトマップインデックスファイルは、多段階に設定したいと考えています。 例えば、sitemapindexA.xmlを下記のように記述した場合、 sitemapindexB.xml と sitemapindexC.xml に記述されたサイトマップファイルを読んでくれるでしょうか。 --- http://www.example.com/sitemapindexA.xmlの内容 --- <?xml version="1.0" encoding="UTF-8" ?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemapindex> <loc>http://www.example.com/sitemapindexB.xml</loc> </sitemapindex> <sitemapindex> <loc>http://www.example.com/sitemapindexC.xml</loc> </sitemapindex> </sitemapindex> --- ご回答よろしくお願いします。

    • ベストアンサー
    • XML
  • グーグルサイトマップでのインデックス期間は?

    XMLファイルを作成しサーバーにアップ、グーグルサイトマップにて登録も済ませたのですがなかなかインデックスされません。 アップしてひと月以上経ちますが30ページほどインデックスされたのみで、全体の1%くらいです。 サイト自体は半年以上前にインデックスされてます。 ファイルの保存形式はUTF-8、ファイル数は約2500ほどです。 最近、無数にあったフォルダを編成しなおして、3つにまとめました。 以前のインデックスがなかなか消えてくれず、新しいURLがインデックスされません。 こんな感じですがインデックスにはどの程度かかるものなのでしょうか。 アドバイスをよろしくお願いいたします。<m(__)m> ファイルの記述はこんな感じです。 <?xml version="1.0" encoding="UTF-8" ?> <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> <url> <loc>http://**********.com</loc> <priority>1.0</priority> </url> <url><loc>http://**********.com/*****/*****.htm</loc><lastmod>2005-11-15T15:37:50+00:00</lastmod></url> ・ ・ <url><loc>http://**********.com/*****/*****.htm</loc><lastmod>2005-11-15T15:37:50+00:00</lastmod></url> </urlset>

  • XMLファイルのアップロードの方法

         宜しくお願い致します 先ごろネットショッピングのHPを立ち上げました。 それでアクセスを増やすために、XMLファイルを作成して グーグルにサイトマップとして送信して登録をしようとしました。 XMLファイルを作る所までは順調だったのですが、自分のHPに アップロードするのがうまくいかなくて弱っています。 ルートディレクトリにアップロードとあるのでその通りにしても、 トップページには、HPのURLが表示されるだけです。 (これでいいのかどうかが分かりません?) sitemap.xml は下記のとおりです <?xml version="1.0" encoding="UTF-8"?> -<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <!-- created with free sitemap generation system www.sitemapxml.jp --> -<url> <loc>http://www3.hp-ez.com/hp/bitowabi/page1/</loc> <priority>1.0</priority> </url> </urlset> 宜しくお願い申し上げます。

  • Google サイトマップ

    宜しくお願いします。 Google サイトマップに xmlファイル を登録したのですが、status が "Parsing error" と表示されています。 詳細: Parsing error (Line 214) We were unable to read your Sitemap. It may contain an entry we are unable to recognize. Please validate your Sitemap before resubmitting. 原因がわかりません。 ちなみに xml ファイルの中身は(略していますが)、 <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> <url> <loc>http://www.***.com/</loc> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.***.com/XXX/index.htm</loc> <changefreq>weekly</changefreq> <priority>0.5</priority> </url> <url> <loc>http://www.***.com/ZZZ/index.htm</loc> <changefreq>weekly</changefreq> </url> </urlset> です。

  • 携帯サイトをグーグルに登録しようと思うのですが・・・

    グーグルに携帯サイトを登録しようと思っています。サイトマップの作成方法がわかりません。 https://www.google.com/webmasters/sitemaps/docs/ja/protocol.html#escaped など自分で調べたり、他ではある本では 「 <?xml version="1.0" encoding="UTF-8"?> < urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> < url> < loc>登録するURL</loc> < lastmod>最終更新日</lastmod> < changefreq>更新日</changefreq> < priority>サイト内優先順位</priority> </url> </urlset> これ↑に従ったXMLファイルを記述し登録したサイトの一番上位のディレクトリにアップロードする」 と書いてありました。XMLファイルとは何でしょうか? 自分が行った事は 新規ページとして上のタグをソースに書いてファイル名をsitemap.xml.htmとして保存して自分のサイトの一番上位のフォルダにアップロードしました。 https://www.google.com/webmasters/sitemaps/showaddsitemap?siteUrl=http%3A%2F%2Fwww.himadane.com%2Frisuka%2F&hl=ja このページで「モバイルサイトマップを追加」を選択し 3でhttp://www.サイト名.com/sitemap.xmlもしくはhttp://www.サイト名.com/sitemap.xml.htmを記述し 4で「XHMTLモバイルプロファイル(WAP2.0)」を選択し 「モバイルサイトマップを追加」を押しました。しかしエラーでした。 何が違うのでしょうか?親切な方がいましたら教えて頂くとあり難いです

  • サイトマップをテキスト形式でアップしても認識されません。。

    サイトマップをテキスト形式で作成し、Googleウェブマスターツールでサイトマップの送信をしたのですが、失敗してしまいます。 (ステータスの欄で×が出てしまいます) エラーのメッセージは以下の通りです。 ---------------------------------------------------------------- × サポートされないファイル フォーマット お客様のサイトマップのファイル形式はサポートされていません。 サイトマップのガイドラインに従ってサイトマップを修正し、再送信してください  △! サイトマップ URL はこのサイト外の URL にリダイレクトされました。 サイトマップ URL はこのサイト外の URL にリダイレクトされました。 URL が正しいことを確認してください。 ---------------------------------------------------------------- テキストファイルはきちんとUTF-8で作ってあります。 また、URLも5万以内に収まっています。 サーバーに上がっているサイトマップにアクセスしても、きちんと表示されます。 どなたか原因がお分かりになる方がいらっしゃればよろしくお願いいたします!

  • サイトマップ作成

    http://dokodemo.rankuappu.com/google3.html こちらでサイトマップを作成して、プログラムを取得しましたが、 そのプログラムをHTMLに貼り付けしたら、URL先が表示しただけでした。 取得したプログラムサンプルです <?xml version="1.0" encoding="UTF-8" ?> -<urlset xmlns="http://www.**************"> - <url> <loc>http://********************</loc> <lastmod>2007-10-08</lastmod> <changefreq>weekly</changefreq> <priority>0.5</priority> </url> これをどのように編集していいかわかりません

    • ベストアンサー
    • HTML
  • PHPでHTMLソースから特定のURLを抽出したい

    PHPで外部サイトのHTMLソース内の特定のURLを取得するにはどうすればいいでしょうか? 具体的には楽天市場の個別商品ページのHTMLソースにあるレビューページのURLを抽出したいと思っています。 ttp://item.rakuten.co.jp/asagao/332/のHTMLソースから レビューページのURLのttp://review.rakuten.co.jp/item/1/229861_10000050/1.1/を取得するようなプログラムを作りたいと思っています。 自力で頑張ってみたもののPHP初心者のため、preg_matchや正規表現でお手上げ状態になってしましました。 プログラムのソースコードを教えていただけると助かります。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでのリンク

    ステータスバーに表示されるリンク先URLがttp://aaa.jp/link.php?×××=○○○なのに、実際に飛ばされるサイトのURLがttp://bbb.jp/というのをよく見かけるのですが、同じようなリンクの方法を自分のサイトにも使うにはどうすればいいのでしょうか? phpを使うまではわかるのですが、その先が全くわかりません。ちなみにphp初心者です。 もし難しい技術であるのなら、初歩から勉強したいと思うので、お勧めのphp参考書と参考URLを教えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう