Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czyszczenie stringa pod XML (rss)
Forum PHP.pl > Forum > PHP
Avatarus
Witam
Potrzebuje porady, jak skutecznie oczyścić jakiś string, tak żeby był w pełni zgodny z standardem XML

Mam czasem dziwne opisy i przez to RSS się sypie.

umnie RSS jest generowany tak:

  1. <item>
  2. <title>'.bbcode(strip_tags(html_entity_decode(($wiersz[1])))).'</title>
  3. <link rel="alternate" href="http://www.swtor-online.com.pl/news.php?id='.$wiersz[2].'"/>
  4. <guid>http://www.swtor-online.com.pl/news.php?id='.$wiersz[2].'</guid>
  5. <pubDate>'.date("r",$wiersz[3]).'</pubDate>
  6. <description>'.htmlspecialchars(bbcode(strip_tags(html_entity_decode(substr($wiersz[4],0,1000))))).'... '.'</description>
  7. </item>';


wszytko oczywiście w pętli. Kodowanie UTF-8
Będę wdzięczny za pomoc.
thek
Powiem, że z rss zawsze są drobne problemy, zwłaszcza z encjami pod iso. Jedyne sensowne rozwiązanie tego problemu to htmlspecialchars użyte na całej treści a dodatkowo cała zawartość description ujęta w CDATA. Dopiero wtedy się nie rozwala. Brak CDATA najczęściej kończy się problemem z interpretacją encji, bo nie wie rss jak traktować poprzedzający go &, nawet jeśli widzi $ amp; to nie zawsze traktuje to jako całość, a co gorsza to ciąg & amp;4676; nie przetworzy do encji prawidłowej. Sam się na to kiedyś naciąłem. Kombinacja htmlspecialchars + CDATA działa zawsze smile.gif
Avatarus
a możesz pokazać na przykładzie?
thek
To jedynie dodanie do Twojego przykładu CDATA tak naprawdę smile.gif
  1. '<description><![CDATA['.htmlspecialchars(bbcode(strip_tags(html_entity_decode(substr($wiersz[4],0,1000))))).'... ]]></description>
Avatarus
no i działa.
Nie trzeba nawet reszty tych funkcji, tylko samo gdata + substr
Wielkie dzięki
thek
Ja zawsze mimo wszystko robię strip_tags... Nie ma sensu wrzucać w description jakiegokolwiek znacznika z racji tego, że jeśli masz cięcie stringa z automatu (substr) to na bank wystąpi Ci w pewnym momencie nie sparowanie zamknięć.
Avatarus
masz racje. Poprawiłem to.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.