Passage de caractère special dans une url

Eléphanteau du PHP | 33 Messages

22 sept. 2005, 10:56

Bonjour,

Je bloque sur un truc tout bête là. Passer le caractère '#' dans une url. Quand je fais un GET de la variable, elle est vide quand je passe ce caractère :/ ça marche avec d'autres caractères pourtant (", $ etc..)
Y'a-t-il moyen de le recup ou c'est pas possible ?

Merci.
Modifié en dernier par aqua007 le 22 sept. 2005, 18:17, modifié 1 fois.

Mammouth du PHP | 19672 Messages

22 sept. 2005, 11:57

Utilise urlencode() pour créer les liens et urldecode() pour récupérer les paramètres.
MAIS : le "#" est particulier dans une url, il signifie le pointage vers une ancre dans la page. Une url du genre www.monsite.com/index.php#rubrique3 va ouvrir la page index et positionner l'ancre "rubrique3" en haut de la fenêtre. Cette ancre peut être soit un attribut name dans une balise <a> soit un attribut "id" dans n'importe quelle balise html. Si donc au milieu de ta page tu as par exemple une balise qui ressemble à <h3 id="rubrique3">3 : le titre de la troisième rubrique</h3>, quand tu ouvrira ta page avec une url comme montré ci-dessus, ce titre <h3> sera la première ligne affichée dans la page et il faudra utiliser la barre de défilement vertical pour voir le haut de la page.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 33 Messages

22 sept. 2005, 12:55

Waip, c'est ce que j'avais déjà fait mais ça voulais pas marcher. En faite un urlencode transforme le '#' en '%23' dans le code source de la page mais quand je clique sur le lien c'est '#' qui est donné dans l'url et je peu pas le récuperer :/

Pour l'instant le seul truc que j'ai trouvé c'est de faire 2 urlencode de suite pour transformer le '%23' en '%2523' dans le code source ce qui donne '%23' dans le lien de la page. Quand je recup le '%23' en GET dans ma page appelée et que je l'affiche j'ai bien le caractère '#' à l'écran. Mais a mon avis doit y avoir une autre solution, y'a un truc que je doit pas bien faire :S car 2 urlencode de suite -__-

Mammouth du PHP | 19672 Messages

22 sept. 2005, 17:24

Alors fais urlencode une fois, mais juste après, utilise str_replace("%23", "#", $ton_url) avant de l'utiliser
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 33 Messages

22 sept. 2005, 18:17

Merci ;) :merci: c'est GG