RE: [PHP] Escaping '#' Sign

From: Date: Fri, 13 Dec 2002 12:21:40 +0000
Subject: RE: [PHP] Escaping '#' Sign
Groups: php.general 
Request: Send a blank email to php-general+get-128151@lists.php.net to get a copy of this message
> -----Original Message----- > From: Mike Smith [mailto:msmith@larrymethvin.com] > Sent: 12 December 2002 14:47 > > Rendered results of <a href...> = > > > http://company.com/custmaint.php?id=70&class=&cust=company > T/T #29&type=OEM > > id is the record id > class is Null so that's OK. > cust=company T/T #29 > type=OEM > > I present the info in a form... > > echo "<td>\n"; > echo "<input type=\"text\" name=\"cust\" > value=\"$cust\">\n"; > echo "</td>\n"; > > This gives me: > +------------------------+ > |company T/T | > +------------------------+ > *Note lack of #29 which I do see in the HTML table. If I save > (UPDATE WHERE > id=$id) this record cust will now be company T/T > > All the other fields fill in correctly. Is it seeing the # as > a comment? Nope -- as an anchor name. Written like this, you're telling your browser to load the page identified by http://company.com/custmaint.php?id=70&class=&cust=company T/T (which, by the way, is probably invalid in itself, but we'll come to that!), and then go to the anchor named 29&type=OEM on that page. What you need to do is urlencode() the value of the cust parameter before inserting it in your <A href=....> tag, so that any characters which might cause problems (such as # or &, or even space) don't appear in the rendered URL, but instead are encoded as a %xx value (or maybe + for a space -- can't remember which urlencode() does). This is all you need to do -- as it's a URL, it automatically gets URL-decoded by the Web server before being passed to your script, so you should see what you want. (But don't forget to re-urlencode it if you need to pass it on in another URL!) Hope this helps!

« previous php.general (#128151) next »