HTML entity - forrás szinten
Sziasztok!
Lehet egy számotokra egyszerű problémával fordulok hozzátok. Azonban nekem beletört a bicskám, és hosszas kutatás után sem találtam megfelelő megoldást.
Ahogy a téma címében is írtam, a HTML Entities-szel van bajom. Adott egy egyszerű CMS, ami XML fájlokban tárolja a weboldal adott tartalmait, ilyen formában:Ezen ugye jól látszik, hogy a speciális karaktereket konvertálja. Megjelenítésnél pedig megjelennek szépen. Azonban ha az oldal forrását nézem, akkor ugyan ez a ronda szöveg fogad, mint a fenti kódrészletben. Ez számomra a keresőoldalakon való megjelenésnél okoz problémát, mert ott is ezek a ronda kódok jelennek meg.
Természetesen első utam a php manualhoz vezetett, ahol meg is találtam azokat a funkciókat, amikre azt hittem, hogy majd segítenek, azonban ezek nem forrás szinten konvertálnak, hanem csak a kimenetet.
Kérdésem tehát adott: hogyan tudnám elérni, hogy a forrásban ne a HTML entity-k jelenjenek meg?
Válaszaitokat előre is köszönöm!
■ Lehet egy számotokra egyszerű problémával fordulok hozzátok. Azonban nekem beletört a bicskám, és hosszas kutatás után sem találtam megfelelő megoldást.
Ahogy a téma címében is írtam, a HTML Entities-szel van bajom. Adott egy egyszerű CMS, ami XML fájlokban tárolja a weboldal adott tartalmait, ilyen formában:
<content><![CDATA[<p>
- Ki az abszol&uacute;t kancsal?<br />
- Akinek s&iacute;r&aacute;skor a h&aacute;t&aacute;n folynak v&eacute;gig a k&ouml;nnyei.</p>
]]></content>
Természetesen első utam a php manualhoz vezetett, ahol meg is találtam azokat a funkciókat, amikre azt hittem, hogy majd segítenek, azonban ezek nem forrás szinten konvertálnak, hanem csak a kimenetet.
Kérdésem tehát adott: hogyan tudnám elérni, hogy a forrásban ne a HTML entity-k jelenjenek meg?
Válaszaitokat előre is köszönöm!
"nem forrás szinten
A barátod mindenképp a html_entity_decode():
http://hu2.php.net/manual/en/function.html-entity-decode.php
Illetve most látom már, mire gondolhatsz: az ékezetes betűk kétszer vannak kódolva. Ezesetben nincs jobb ötletem, mint kétszer meghívni a nevezett függvényt, na de inkább ne.
Decode
Igazad van, a kétszer
Váá, álmos vagyok, nem figyelek arra, mit írok. Mindenesetre a fentieket nem törlöm, tanulságos hülyeség. Poetro válasza a helytálló.
Köszönöm az eddigi válaszokat
Itt egy kép, ami talán többet mesél, mint en tudok: link és a teszt oldal elérhetősége pedig itt
A weboldalon minden speciális karakter tökéletesen jelenik meg, azonban ha megnézitek az oldal forrását, akkor ott bizony az entity-k fogadnak. És a legtöbb bot az forrás szinten nézi és a csúnyábbik verzió lesz látható a találati listán.
Eddig rendben van. Amit én
Ennek legjobb megoldása az lenne, ha az adatforrásba NEM a karakterek HTML-kódja kerülne be, megszűnne minden kimeneti problémád. Viszont ehhez lehet le kell cserélni az adatfájlok tartalmát előállító szerkesztőt. Illetve feldobnék egy olyat, hogy az XML-fájl mentésének a helyén a htmlentities()-t cseréld le htmlspecialchars()-ra, az a betűket nem próbálja átkódolni. Viszont ekkor minden XML-fájlt át kell írnod, mert a már meglévő kétszer-kódolásokat nem oldja meg.
Másik megoldás vagy ugyanitt, mentés előtt, vagy kimeneti oldalon a HTML-karakterkódok visszaállítása ékezetes betűkké, vagy annak elfogadása, hogy ez igenis jól jelenik meg, legfeljebb néhány bot nem képes boldogulni vele :)
Remélem érthető voltam, korán van még... :)
Nincs probléma
©
,®
,™
) fogod látni a dokumentumban, és ezekkel sincs semmi gond, akár csak az
-vel, amit írhatnék ' '-nek is, vagy 
-nak, vagy 
-nak.