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(""") 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 "&lt;" 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 "&amp;" with "&", the resulting
string being "&quot;", 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 "&amp;" *last*, not
*first*.

Reproduce code:
---------------
print html_entity_decode("&amp;quot;&amp;lt;&amp;gt;");

Expected result:
----------------
&quot;&lt;&gt;

Actual result:
--------------
"<>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=25707&edit=1

Reply via email to