Re: mozilla & urlencode
| From: | Jochem Maas | Date: | Sun, 05 Jun 2005 20:02:19 +0000 |
| Subject: | Re: mozilla & urlencode | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-216424@lists.php.net to get a copy of this message | ||
John Taylor-Johnston wrote:
This works: "District of St. Francis" http://www.glquebec.org/tezt.php#District+of+St.+Francis <a name="District+of+St.+Francis"></a> This does not: "Montréal District #2" http://www.glquebec.org/tezt.php#Montr%E9al+District+%232 <a name="Montr%E9al+District+%232"></a> I'm beginning to see the problem lies with the French character "é". I don't see it being #. In any case, I cannot change existing fields. How can I get this working?read: http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1 http://www.w3.org/TR/REC-html40/appendix/notes.html#non-ascii-chars http://www.w3.org/TR/xhtml1/#h-4.10 http://www.w3.org/TR/xhtml1/#C_8 [w3c - confronting us daily with the fact that they are smarter than us :-)] in short; only strings passing this regexp: [A-Za-z][A-Za-z0-9:_.-]* ...are ok for use in the name attribute. you will have to either change the data you have in the DB or transform the text so that all non-ascii chars are replaced with their ascii equivalent (e.g. é -> e) whenever you wish to use the text in a name attribute. and you can totally forget using the '#' in the value of a name attribute! I don't know what kind of data entity the string 'Montréal District #2' belongs to but maybe it has a keyfield (numeric is easiest here!) which can be used to set the value of the name attribute. good luck! rgds, Jochem
Pablo Gosse wrote:I'm not sure, but I see two things that might be causing this. First, why are spaces, which should be translated as %20, being represented as a '+'? Second, you have a # in the actual bookmark name, which I would assume is not valid since the # denotes the beginning of a bookmark. So perhaps IE compensates for this, but Mozilla reads the bookmark as looking for <a name="4"></a> because of the #4 at the end of the bookmark name.I generate the link using urlencode. if ("" != $mydata->district){ echo " - <a href=\"#".urlencode($mydata->district)."\">$mydata->district</a></h1>"; }else{ echo "</h1>"; } The link is named:echo "<hr size=1><a name=\"".urlencode($mydata->district)."\"></a><h2>$mydata->district</h2>\n";