#25707 [Opn->Bgs]: html_entity_decode over-decodes "
| From: | sniper@php.net | Date: | Tue, 30 Sep 2003 19:01:00 +0000 |
| Subject: | #25707 [Opn->Bgs]: html_entity_decode over-decodes " | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-48348@lists.php.net to get a copy of this message | ||
ID: 25707
Updated by: sniper@php.net
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 "<" 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