Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czyszczenie stringa pod XML (rss)
Avatarus
post 21.01.2010, 18:39:20
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
thek
post 21.01.2010, 20:08:45
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Avatarus
post 21.01.2010, 20:13:24
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


a możesz pokazać na przykładzie?


--------------------
Go to the top of the page
+Quote Post
thek
post 21.01.2010, 20:19:40
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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>


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Avatarus
post 24.01.2010, 12:36:12
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


no i działa.
Nie trzeba nawet reszty tych funkcji, tylko samo gdata + substr
Wielkie dzięki


--------------------
Go to the top of the page
+Quote Post
thek
post 24.01.2010, 12:51:26
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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ęć.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Avatarus
post 24.01.2010, 12:59:51
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


masz racje. Poprawiłem to.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 15:08