Escape werkt niet in echo

  • Hallo,
    ben een beginnende programmeur en bezig met een klein projectje voor mezelf.
    Ik heb hier een beschrijving die dan in de database staat, maar als ik deze dan in een 'echo' zet laat deze de tekst van in de database zien, maar dan zonder enters. Alles zit zowat aan mekaar en dat is niet echt overzichtelijk.
    Zouden jullie mij kunnen helpen?
    Alvast bedankt!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Als ik die htmlentities erbij doe komt er helemaal niks meer van tekst te staan

    Ik zou geen htmlentities() gebruiken maar htmlspecialchars(). Deze functies doen ongeveer hetzelfde, met als verschil dat htmlentities speciale karakters die een html-entity-equivalent hebben hierin worden omgezet (en dat zorgt voor enige verspilling, is minder goed voor XML compatibiliteit blijkbaar; tis gewoon niet nodig, die extra omzettingen :)).


    Output escaping is altijd een goed ding, tenzij je dit bewust niet wilt doen bijvoorbeeld omdat je echt HTML wilt afdrukken (die van een betrouwbare bron afkomstig is).


    De reden dat je een lege string krijgt komt waarschijnlijk omdat zowel htmlentities() alsmede htmlspecialchars() ook een derde parameter kennen die aangeeft wat je character encoding is. Als de te escapen tekst onbekende (illegale) karakters bevat ten aanzien van deze encoding wordt de lege string geretourneerd. Grote kans dat de character encoding van de tekst niet aansluit bij de aangenomen (default) encoding van htmlentities() / htmlspecialchars().


    Je moet het zo zien: escaping vindt altijd plaats in een specifieke character encoding (context), anders kan er simpelweg niet goed ge-escaped worden.


    Ik weet niet welke character encoding je gebruikt (UTF-8?) of waar deze vandaan komt (database?) maar het lijkt mij altijd een goede zaak om EXPLICIET aan te geven met welke character encoding (in welke context) je wilt escapen.


    Te meer omdat de default encoding (3e parameter) in PHP 5.4.0 verandert van ISO-8859-1 naar UTF-8. Het is (IMO) altijd beter om expliciet ( == ondubbelzinnig ) aan te geven wat er zou moeten gebeuren, in plaats van uit te gaan van default waarden (die dus nogal eens kunnen veranderen).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!