From: "Eugene Lee" <[EMAIL PROTECTED]>

> On Wed, Oct 01, 2003 at 01:12:16AM -0400, Gerard Samuel wrote:
> :
> : Got a problem with htmlspecialchars being too greedy, where
> : for example, it converts
> : &foo;
> : to
> : &amp;foo;
> :
> : Yes it displays correctly in the browser for some content, but not all.
> : (an example is posted below)
> : So I came up with this example code, but not sure if there is an
> : easier/better way to get the correct end result.
> : If there is a better way, feel free to let me know.
> : Thanks
> :
> : Note: I dont read/speak chinese, so if its offensive please forgive me.
> :
> : ------
> : <?php
> :
> : $foo = '&#20013;&#25991; & http://www.foo.com/index.php?foo=1&bar=2';
>
> The problem isn't with htmlspecialchars().  It doesn't know what parts
> of the string are HTML character references and which parts are not.
> But if you're willing to dig up the numeric character references for
> those specific Chinese characters, then split the string into the part
> that needs no translation and the part that needs it.  That is:
>
> $foo1encoded = '&#20013;&#25991;'
> $foo2raw = ' & http://www.foo.com/index.php?foo=1&bar=2';
> $foo = $foo1 . htmlspecialchars(foo2raw);

Maybe you should run html_entity_decode() on the string first, then run
encode again. The decode will take &#20013; and turn it into it's actual
character but not affect anything else. Then the recoding will turn it back
into &#20013; and also encode any other characters.

---John Holmes...

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to