2015-05-20 5 views
1

Я использую PHP для создания файла XML Sitemap для представления Google, но я получаю сообщение об ошибке в мой код, который:XML Sitemap Разбор ошибок с PHP

<?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 Parsing Error: not well-formed

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

+0

Я предлагаю использовать XML-библиотеку (DOM или XMLWriter) для генерации XML или, по крайней мере, использования экранирования. – ThW

ответ

2

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

<loc>http://fulldistortion.co.uk/post.php?id=$post_id&amp;title=$post_url_title</loc> 
                ^^^^^ 
+0

Ах да, конечно - Спасибо, отлично работает сейчас! –

+0

Просто добавьте немного контекста, это ссылка на соответствующий раздел [Спецификации XML] (http://www.w3.org/TR/REC-xml/#syntax) – lfurini

Смежные вопросы