2012-03-15 15 views
4

私は約3,000-4,000の動的生成ページを持つサイトで作業しています。私はXMLサイトマップを更新しようとしています。過去にオンラインジェネレータを使用しようとしましたが、すべてのページを正しくキャプチャしているようには見えないので、自分で何かをやろうとしていました。PHPでXMLタグをエコーする方法を教えてください。

<?php 
require('includes/connect.php'); 
$stmt = $mysqli->prepare("SELECT * FROM db_table ORDER BY column ASC"); 
$stmt->execute(); 
$stmt->bind_result($item1, $item2, $item3); 
while($row = $stmt->fetch()) { 
    echo '<url><br /> 
    <loc>http://www.example.com/section/'.$item1.'/'.$item2.'/'.$item3.'</loc> 
    <br /> 
    <lastmod>2012-03-15</lastmod> 
    <br /> 
    <changefreq>monthly</changefreq> 
    <br /> 
    </url> 
    <br /> 
    <br />'; 
} 
$stmt->close(); 
$mysqli->close(); 
?> 

PHPをテキストファイルに書き込むことの今短い、私はちょうどコピーしてに貼り付けたい(実際のXMLタグをエコーすることを強制することができる方法があります:基本的に私のようなものを持っています私のサイトマップファイル)?

header('Content-Type: text/plain'); 

このヘッダーを使用して応答を提供することで、ブラウザはXMLとしてそれを解析しようとはしませんが、プレーンテキストとして完全な応答を示しています。

答えて

14

は、ファイルの先頭に次のコードを追加します。

+0

Haha..wow時々その答えの最も簡単な...感謝を! –

+0

私はthis:header( "Content-type:text/xml");を使用しています。出力をうまくフォーマットします。 – stuthemoo

5

これは私が使用するスクリプトです。それはGoogleがサイトマップとして読むための適切なxml形式でエコーする。

<?php 
header("Content-type: text/xml"); 
$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
$xml_output .= "<urlset 
     xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" 
     xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
     xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 
      http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">\n"; 

$xml_output .= "<url>\n"; 
$xml_output .= " <loc>http://www.mydomain.com/page1</loc>\n"; 
$xml_output .= "</url>\n"; 

$xml_output .= "<url>\n"; 
$xml_output .= " <loc>http://www.mydomain.com/page2</loc>\n"; 
$xml_output .= "</url>\n"; 

$xml_output .= "</urlset>"; 

echo $xml_output; 
?> 
+0

実際には、設定されたXMLファイルはありませんが、サイトをクロールするたびに即座に生成していますか? –

+0

@pennstate_fanboyうん、あなたがページ/sitemap.phpにアクセスするたびに、知っているすべてのページからサイトマップが生成されます。それは私がそれを行う方法です、私は時間のヒープを節約! :) –

+0

それは完璧な意味がある、私は洞察のおかげで、私は同じルートに従わなければならないと思う。 –

3

あなたはそれ以外の場合は、お使いのブラウザはそれらをレンダリングしようとする、タグをエスケープする必要があります。

echo htmlentities('your xml strings'); 
+2

FYI: 'echo'は関数ではないので、括弧は必要ありません。 –

関連する問題