préparer des url pour rewriting?

préparer des url pour rewriting? - PHP - Programmation

Marsh Posté le 19-10-2009 à 17:20:44    

Salut,
 
Mon .htaccess est pret :
RewriteRule ^fiche-[\.a-z]*-([0-9]+).html   fiche.php?id=$1 [L]
 
Mais comment transformer mes liens fiche.php?id=1 dans l'application php?
 
Je ne cherche pas du tout fait mais seulement une piste.
 
Merci de votre aide.


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 19-10-2009 à 17:20:44   

Reply

Marsh Posté le 19-10-2009 à 17:26:42    

Le rewriting via htaccess ne fonctionne que dans un sens. A savoir que d'après le htaccess que tu écris, si ton serveur web reçoit une requête pour la page fiche-cuisine-1.html, il va en fait demander à ton application la page fiche.php?id=1
 
Ensuite, c'est à toi de faire en sorte d'afficher directement des liens propres.
Au lieu de faire

Code :
  1. <a href="fiche.php?id=<?php echo $ficheId; ?>">Fiche cuisine</a>


Tu fais directement :

Code :
  1. <a href="fiche-<?php echo $ficheLabel; ?>-<?php echo $ficheId; ?>.html">Fiche cuisine</a>


---------------
Mon Feedback !
Reply

Marsh Posté le 19-10-2009 à 19:46:05    

Salut,
 
je me suis mal exprimé.
 
Je cherche à faire un preg_replace
pour transformer une URL du type fiche.php?id=1
 
En gros l'inverse de ce qui est fait dans le .htaccess.
 
Merci :)


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 20-10-2009 à 09:39:00    

Salut,
j'ai deux ereg_replace déprecié.
J'essaye de lire la doc php pour transformer ça en preg_replace, mais je n'y arrive pas!
qq'un à une doc compréhensible?
 
Merci.
 
ereg_replace("[^a-zA-Z0-9]", ".", $text);            
ereg_replace("-$", "", $text));
 


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 20-10-2009 à 12:48:10    

http://perldoc.perl.org/perlre.html
 
Sinon, je veux bien que tu indiques le contenu de $text, tes regexp qui fonctionnent (en ereg_replace) ainsi que tes regexp qui ne fonctionnent pas (preg_replace).
Ou décrire en quelques phrases ce que tu veux qu'elle fasse :
Remplacer tout les caractères qui ne sont pas des lettres ou chiffres par des '.' ? Et supprimer un tiret en fin de chaine ?
Parce que si c'est ça je pense que tes regexp fonctionnent :

Code :
  1. $text = preg_replace("/[^a-zA-Z0-9]/", ".", $text);            
  2. $text = preg_replace("/-$/", "", $text));


Ca fait pas ce que tu veux ? (J'ai pas du tout testé hein ^^)


Message édité par Tirkyth le 20-10-2009 à 12:54:14

---------------
Mon Feedback !
Reply

Marsh Posté le 21-10-2009 à 10:01:37    

Salut,
 
merci :)
 
Alors, dans le cadre d'une préparation d'url pour de l'url rewriting, je dois préparer certains morceaux de strings pour ne pas avoir de caractères spéciaux, ni accents.
 
Comme tu l'as vu, premier ereg remplacement de tout ce qui n'est pas des lettres ou du chiffre par un point.
le dernier ereg, suppresion d'un tiret en fin de ligne, c'est plutôt un bug, parceque le caractère de remplacement du premier ereg était le - à l'origine.
 


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 21-10-2009 à 10:21:38    

D'accord. Je te laisse modifier ma 2ème regexp pour changer le tiret par un point.
 
Par contre cette solution n'est peut-être pas la mieux. Par exemple, un titre comme "Cet été, direction Hawaï !" deviendra "Cet..t...direction.Hawa..." non ?
 
Si tu veux, j'ai trouvé cette fonction sur internet qui devrait te donner un meilleur résultat :

Code :
  1. static public function rewrite($chaine)
  2. {
  3.    // remplace les caractères accentués par leur version non accentuée
  4.    $id = strtr($chaine,
  5.            'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
  6.            'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy' );
  7.    // remplace les caractères non standards
  8.    $id = preg_replace(
  9.                array(
  10.                    '`^[^A-Za-z0-9]+`',
  11.                    '`[^A-Za-z0-9]+$`',
  12.                    '`[^A-Za-z0-9]+`',
  13.                ),
  14.                array(
  15.                    '',
  16.                    '',
  17.                    '-',
  18.                ),
  19.                $id);
  20.  
  21.    return strtolower($id);
  22. }


---------------
Mon Feedback !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed