ID: 25707 Updated by: [EMAIL PROTECTED] Reported By: Bjorn dot Victor at it dot uu dot se -Status: Open +Status: Bogus Bug Type: Strings related Operating System: Solaris 8 PHP Version: 4.3.3 New Comment:
RTFM: http://www.php.net/html_entity_decode (the 2nd optional parameter..) Previous Comments: ------------------------------------------------------------------------ [2003-09-30 14:52:20] Bjorn dot Victor at it dot uu dot se Description: ------------ Symptom: html_entity_decode("&quot;") returns '"', while the expected value would be """. Corresponding (wrong) behaviour for & followed by "lt;", "gt;" etc. Another example is html_entity_decode(htmlentities("<")) which returns "<" rather than "<" as expected. As a result, html_entity_decode can not be used as the inverse of htmlentities. Diagnosis: The function (php_unescape_html_entities in ext/standard/html.c) replaces each entity in basic_entities with its corresponding character, but starts by replacing "&" with "&", the resulting string being """, which is then replaced by '"'. Solution: php_unescape_html_entities in ext/standard/html.c traverses the basic_entities from the wrong end; it must replace "&" *last*, not *first*. Reproduce code: --------------- print html_entity_decode("&quot;&lt;&gt;"); Expected result: ---------------- "<> Actual result: -------------- "<> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25707&edit=1