Ошибка синтаксического анализа XML-файла Sitemap с помощью PHP

1

Я использую php для создания XML файла sitemap для отправки google, но я получаю сообщение об ошибке в моем коде:

<?php
$get_posts_sql = "SELECT * FROM posts ORDER BY added DESC";
$get_posts_res = mysqli_query($con, $get_posts_sql);
while($post = mysqli_fetch_assoc($get_posts_res)){
    $post_id = $post["id"];
    $post_title = $post["title"];
    $post_added = $post["added"];
    $post_date =    date('Y-m-d', strtotime($post_added));

    $post_url_title = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $post_title);
    $post_url_title = strtolower(str_replace(" ","-",$post_url_title));

    $list_posts .= "

        <url>
            <loc>http://fulldistortion.co.uk/post.php?id=$post_id&title=$post_url_title</loc>
            <lastmod>$post_date</lastmod>
            <changefreq>monthly</changefreq>
            <priority>0.8</priority>
        </url>

    ";
}
?>

Когда я запускаю страницу в своем браузере, я получаю:

Ошибка анализа XML: неверно сформирована

Ошибка, похоже, связана с разделом &title= кода, но мне действительно нужно, что там, как это выглядит, как выглядит мой url. Как исправить эту ошибку?

  • 0
    Я предлагаю использовать библиотеку XML (DOM или XMLWriter) для генерации XML или, по крайней мере, использовать экранирование.
Теги:
parsing
sitemap

1 ответ

2
Лучший ответ

В XML амперсанды должны быть заменены сущностью, используйте &amp; вместо.

<loc>http://fulldistortion.co.uk/post.php?id=$post_id&amp;title=$post_url_title</loc>
                                                     ^^^^^
  • 0
    Ах да, конечно - Спасибо, отлично работает сейчас!
  • 0
    Просто чтобы добавить немного контекста, это ссылка на соответствующий раздел спецификаций XML

Ещё вопросы

Сообщество Overcoder
Наверх
Меню