[PHP5] htmlentities bug?

Pagina: 1
Acties:

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 07-05 18:01
Als ik met een formulier iets post, en daarin komen karakters in voor waar htmlentities op reageert, gebeurd er iets vreemds bij sommige. (heb ze natuurlijk niet allemaal getest, weet je hoeveel...)

als ik ë (e umlaut) post, en doe vervolgens met print of echo deze weer op het scherm zetten krijg VOORDAT deze met htmlentities is behandeld:
code:
1
ë   (in de source is dit ook ë)

na behandeling met htmlentities($str,ENT_QUOTES); krijg ik dit:
code:
1
ë  (in de source is dit: ë


Je kan wel raden dat ik hier niet blij mee ben.

Met PHP versie 4 gaat dit WEL goed, maar PHP versie 5 (de nieuwste) niet.

Ik heb in de changelog gekeken of hier iets over te vinden was maar nee... Ook in de bug database kan ik niets vinden.

Weet iemand hier iets van?

[ Voor 2% gewijzigd door NMe op 09-05-2005 14:34 ]


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Dit is toch goed, of begrijp ik je verkeerd :?

Sole survivor of the Chicxulub asteroid impact.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je moet htmlspecialchars hebben, niet htmlentities. Staat ook gewoon in de documentatie:
htmlentities:
This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
htmlspecialchars:
Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings. This function returns a string with some of these conversions made; the translations made are those most useful for everyday web programming. If you require all HTML character entities to be translated, use htmlentities() instead.
Not a bug dus, volgende keer beter lezen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En weer open, het was een communicatiefoutje. Blijkbaar wordt de & van ë vervangen door &, waardoor er ë komt te staan. Cheater heeft via mail uitgelegd dat hij eenmalig de functie htmlentities aanroept, dus het kan niet aan een dubbele aanroep liggen.

* NMe vindt het een vreemd probleem. :)

[ Voor 7% gewijzigd door NMe op 09-05-2005 14:39 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 07-05 18:01
Bedankt NMe!

Inderdaad. Precies zoals NMe zegt, wordt een e umlaut niet vertaald naar:
code:
1
ë

maar naar:
code:
1
ë


:( Dit gaat dus fout in PHP 5, maar goed in PHP 4 (met dezelfde code)

  • TRON
  • Registratie: September 2001
  • Laatst online: 04-05 12:27
'k Gebruik PHP Version 5.0.0.

PHP:
1
2
3
<?php
echo htmlentities("ë", ENT_QUOTES);
?>

Geeft gewoon een & euml; bij mij als output.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Verwijderd

PHP 5.0.3 doet m ook goed hier...

Welke versie werk jij mee?

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Is het niet zo dat dit in een heel groot script staat ofzo?

Een bestandje als dit:
1 <?php
2 echo htmlentities('ë', ENT_QUOTES);
3 ?>
Geeft dus ook die output??

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 22:55
Het kan haast niet anders of er staat toch al &euml; ipv ë in je bron-string.
Als je daar 1 keer htmlentities overheen gooit, dan krijg je idd natuurlijk &amp;euml;

Hoe, met wat bekijk je je source (want je zegt: in de source staat wel goed ë en niet &euml;) ?

Is het niet zo dat het lijkt dat er ë staat omdat dat automagisch vertaald is (zoals browsers het ook doen) terwijl er in feite in de bron wel &euml; staat?
Pagina: 1