PHP WTF #9

html_entity_decode verwandelt bekanntlicherweise Entities wie ü oder & in ihre Pendandts ü / &.

var_dump(html_entity_decode("&")); //string(1) "&"

Soviel also dazu, soweit erwartungsgemäß. Enter the weirdness:

<meta charset="utf8">
<?php
var_dump(trim(html_entity_decode(" "))); //string(2) " "

Das Manual sagt dazu:

Sie wundern sich vielleicht, warum trim(html_entity_decode(‚ ‚)); den String nicht zu einem leeren Sting reduziert. Der Grund dafür ist, dass ‚ ‚ in der Standard-Kodierung nicht dem Zeichen mit ASCII-Code 32 entspricht (dieses wird von trim() entfernt), sondern dem Zeichen mit ASCII-Code 160 (0xa0).

Genaugenommen verhält sich hier PHP vollkommen korrekt, denn ein Non-Breaking-Space entspricht eben dem ASCII-Code 160. Und der wird leider nicht von trim in der Standardkonfiguration entfernt (siehe 2. Parameter). Auf Stackoverflow wurde das auch diskutiert und zu solch barbarischen Methoden wie str_replace geraten.

Weitere Posts:

Dieser Beitrag wurde unter php, PHP-WTF, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert