如何让PHP回显XML标签?

Wil*_*azi 6 html php xml sitemap

我正在开发一个拥有大约3,000-4,000个动态生成页面的网站,我正在寻找更新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();
?>
Run Code Online (Sandbox Code Playgroud)

现在有短PHP写入到一个文本文件,是有办法,我可以迫使它呼应了实际的XML标记(我只是想复制并粘贴到我的网站地图文件)?

Rob*_*b W 19

在文件开头添加以下代码:

header('Content-Type: text/plain');
Run Code Online (Sandbox Code Playgroud)

通过使用此标头提供响应,浏览器不会尝试将其解析为XML,而是将完整响应显示为纯文本.

  • 我发现使用这个: header("Content-type: text/xml"); 会很好地格式化输出。 (2认同)

Ric*_*ers 5

这是我使用的脚本.它以适当的xml格式回显,供Google阅读为站点地图.

<?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;
?>
Run Code Online (Sandbox Code Playgroud)


Yan*_*iro 5

您需要对标签进行转义,否则,您的浏览器将尝试呈现它们:

echo htmlentities('your xml strings');
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考:`echo` 不是函数,因此不需要括号。 (2认同)