Problème %20 lié aux espaces

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Problème %20 lié aux espaces

Message le Mer Mai 18, 2005 12:58

Salut à tous !

Bon voila je sait que le sujet à déjà été abordé, mé je n'é rien trouV pour résoudre mon pb : j'aimerai supprimer les %20 qui s'affiche à la place des espaces.

Ex : http://www.bradeux.com/137-L'Exorciste en dvd.html

J'ai créé une régle comme ceci :

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([0-9]+)-(.*)\.html$ /product_desc.php?id=$1 [L]

Par la même occasion, si vous pouviez me dire le caractère remplacant le %20 le mieux capter par les robots de google !!! ca serait cool !

Merci d'avance à tous :lol:


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Mer Mai 18, 2005 13:01

Salut,

Je ne sais pas si ça va t'aider, mais essaie d'utiliser la fonction urlencode($variable) de PHP. Lorsque tu récupèreras tes variables avec $_GET["variable"], la fonction urldecode($variable) sera automatiquement appliquée, de ce fait, tu n'auras plus les vilains espaces dans ton URL, mais de jolis "+" :).

Voilà, en espérant t'aider.

A+

Doug


Pouzy
WRInaute accro
WRInaute accro
 
Messages: 1305
Inscription: Mer Sep 01, 2004 19:39

Message le Mer Mai 18, 2005 13:03

Faut pas mettre d'espaces dans les urls :mrgreen:


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Mer Mai 18, 2005 14:27

en fait ça n'é pas un url direct, il s'agit d'un nom quelconque chopé dans une table c'est pour ça qu'il y a des espaces, mais pas seulement, y'a aussi des :, " ....

Concernant urlencode, est ce que tu pourrais m'en dire plus, je débute en php. Voici mon lien actuel :

<a href="<? echo $rs0["id"]?>-<? echo $rs0["product_name"];?>.html"><? echo $rs0["product_name"];?></a>

Merci :lol:


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Mer Mai 18, 2005 14:30

Oui pouzy c'est sûr, c'est de loin le mieux. Seulement, parfois il est peut-être plus simple de feinter rapidement (de la bidouille quoi) plutôt que de faire quelquechose d'archi propre, mais bon, cela n'engage que le webmaster bien sûr :). J'avoue que je suis plutôt un adepte de la bidouille en fait :-D.

Doug


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Mer Mai 18, 2005 14:33

Pour "urlencoder" ce lien, j'opte pour cette méthode :

<?
$id = $rs0["id"];
$product_name = $rs0["product_name"];
?>

<a href="<?=urlencode($id)?>-<?=urlencode($product_name)?>.html"><?=$product_name?></a>

Et lorsque sur la page suivante tu récupères tes variables :

<?
$id = $_GET["id"];
$product_name = $_GET["product_name"];
?>

qui sont automatiquement "urldecodées".

Si tu as d'autres soucis, n'hésite pas.

Doug


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Mer Mai 18, 2005 14:57

Ok, doug ca marche a merveille ! merci

je vais juste pousser un peu plus loin mon apparentissage ! est il possible de remplacer les + par un - et de configurer les : car pour le moment j'obtiens %3A à la place des : ?

Merci


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Mer Mai 18, 2005 15:01

est ce qu'on peu faire aussi quelque chose pour les accents ? j'obtiens %E9 à la place de é ?


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Mer Mai 18, 2005 15:29

Le remplacement des + par des - dans tes variables est possible mais via une autre "bidouille" : les expressions régulières.

En fait, si tu veux changer les espaces par des "-" direct, il faut faire comme suit :

<?
$pattern = "| |";
$replacement = "-";

$variable = preg_replace ($pattern, $replacement, $variable);
$variable2 = preg_replace ($pattern, $replacement, $variable2);
?>

puis inversement dans la page suivante pour remettre les espaces à la place des "-" :

<?
$pattern = "|-|";
$replacement = " ";

$variable = preg_replace ($pattern, $replacement, $variable);
$variable2 = preg_replace ($pattern, $replacement, $variable2);
?>

En fait dans la ligne :

$pattern = "|*|";

Tu mets ce que tu veux à la place de l'étoile, c'est ce que tu veux remplacer, et dans la ligne :

$replacement = "*";

tu mets ce que tu veux à la place de l'étoile et c'est ce par quoi tu vas remplacer.

Pour plus de détails et de meilleures explications que les miennes :) : -http://www.php.net/manual/fr/ref.pcre.php


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Mer Mai 18, 2005 18:06

merci doug, tout marche.

Dernière précision, si je vais mettre plusieurs variables dans le pattern genre espace + è + é + à ... comment puis je faire ?

J'ai esseyé :
<?
$pattern = "| ,é,à,è|";
$replacement = "-";
$variable = preg_replace ($pattern, $replacement, $variable);
?>

Mé bon ... ca marche pas ... ta une idée ??

encore merci

moutyk
WRInaute passionné
WRInaute passionné
 
Messages: 704
Inscription: Sam Mar 01, 2003 23:59

Message le Mer Mai 18, 2005 22:25

Salut,

Tu peux aussi essayer un truc dans le genre à adapter biensûr...

Code: Tout sélectionner
$variable=str_replace(" ","+",$variable);
$variable=str_replace("é","e",$variable);
$variable=str_replace("è","e",$variable);


et ainsi de suite .... toute fois on doit pouvoir faire mieux mais pour quelques régles ca devrait le faire


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Jeu Mai 19, 2005 10:22

Salut,

Oui bradeux, c'est normal que ça ne fonctionne pas, tu ne peux pas remplacer plusieurs expressions comme cela.

Je te ferai un petit bout de code ce midi pendant ma pause pour te montrer comment l'on fait.

A+

Doug


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Jeu Mai 19, 2005 10:24

ok merci doug


dasikund
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Jeu Avr 28, 2005 12:27

Message le Jeu Mai 19, 2005 14:20

Code: Tout sélectionner
<html>
<head>
</head>
<body>
<?
$chaine = "téà _";

$tochange = array ("|é|" => "e", "|à|" => "a", "| |" => "", "|_|" => "-");

foreach ($tochange as $key => $value) {
   $chaine = preg_replace ($key, $value, $chaine);
}

echo $chaine;
?>
</body>
</html>


Voilà, en gros dans le $tochange tu mets ta série de "|a_remplacer|" => "remplacement", séparée par des virgules et la boucle foreach fait le reste du boulot.

A+

Doug

PS : Désolé, un peu de retard, mais resto ce midi ;)


bradeux
WRInaute impliqué
WRInaute impliqué
 
Messages: 385
Inscription: Mer Mai 18, 2005 12:51

Message le Jeu Mai 19, 2005 14:44

Merci doug tout marche ! c nikel tu m'a vraiment aider ! :)


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités