On Wed, Feb 22, 2006 at 01:12:00PM +0800, Louie Miranda wrote:
> Please read below..
>
> > Im having a trouble displaying special characters like #, + on GD (Jpeg) -
> > > Image. When i typed in on the form +88 it only shows 88 and the + sign
> > is
> > > missing.
> > >
> > > My code:
> > > <?php
> > > ..
> > > $line_1_1 = urldecode($_GET["line_1_1"]);
> >
> > You dont want to urldecode() the $_GET vars. PHP already does this
> > step.
> >
> > See what happens with:
> >
> > var_dump(urldecode($_GET['line_1_1']));
> > var_dump($_GET['line_1_1']);
> >
>
> I tested this not on a GD/Image, but on a plain form and plain var_dump.
> The results:
>
> string(1) " "
> string(1) "+"
>
> So, now if i even make a urldecode it also disappers. I think the problem
> is when i typed in + on the user input via form. The url converts it
> to %2B which
> i think is a space. Because as for my example (seen thru the url):
>
> +88and#
> When displayed on an image becomes..
> 88and
>
> Now, if i made this
>
> +88+and#
> It displays..
> 88 and#
this is where i think your confused, the problem with your original
code is you are ending up urldecoding things twice thus thinking
that %2B == a space.
consider:
echo urlencode(' '); # '+'
echo urlencode('+'); # '%2B'
echo urldecode(' '); # ' '
echo urldecode('+'); # ' '
echo urldecode('%2B'); # '+'
if your url is:
http://server.com/?foo=%2B88an%23
then in php if you do:
echo $_GET['foo'];
you will get '+88and#'
if your url is:
http://server.com/?foo=+88and#
then in php if you do:
echo $_GET['foo'];
you will get: ' 88and'
>
> It converts + to space. Now, how could i filter this properly?
Now given what I said and you have a form defined as:
<form method="GET">
<input name="foo">
</form>
And you type in the box '+88and#' the url that is submited should
be:
http://server.com/?foo=%2B88and%23
Then:
echo $_GET['foo']; # '+88and#'
Or if you type: ' 88and#' the url should be:
http://server.com/?foo=+88and%23
or possibly (not to confuse things more)
http://server.com/?foo=%2088and%23
Then:
echo $_GET['foo']; # ' 88and#'
Now, the only way that # could seem to disappear is if you have your
form setup like:
<form method="GET" action="#">
<input name="foo">
</form>
And you type: '+88and', The url will look like:
http://server.com/?foo=%2B88and#
thus:
echo $_GET['foo']; # '+88and'
or if you type ' 88and', the url will look like:
http://server.com/?foo=+88and#
thus:
echo $_GET['foo']; # ' 88and'
Curt.
--
cat .signature: No such file or directory
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php