xpatval Posté 12 Mai 2006 Partager Posté 12 Mai 2006 Bonjour, Je fais mumuse avec un petit exercice qui me pose quelques soucis, je m'explique: Dans le cadre d'une refonte de site, je dois transformer un certain nombre d'urls contenues dans une base. A l'origine, ces urls se présentent sous cette forme: <a href="affich_salar.php?libelle=dupont,louis,_1997">Louis Dupont</a> Je souhaite que celle-ci devienne: <a href="fiche-Louis-Dupont.html">Louis Dupont</a> Bien entendu, il doit y avoir un bon millier de noms. Comment puis-je y arriver, sachant que je me fous de la date ? Ah, je suis parti avec un explode(), mais ce n'est pas le top. Les REGEX ? (je suis nul...) Merci de vos réflexions, xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 12 Mai 2006 Partager Posté 12 Mai 2006 (modifié) Techniquement, si toutes les urls sont selon la même structure (fiche-Prénom-Nom.html), tu peux te passer de cette colonne, puisque tu possèdes déjà toutes les infos nécessaires à la construction de ton url en base (à savoir, le nom et le prénom). Dans ce cas, il te suffirait, dans la page générant le lien, de construire ce dernier en fonction des noms et prénom. A part ça : je ne saurais que te conseiller de ne pas utiliser le tiret comme séparateur dans ce cas précis, car si jamais tu tombes sur un salarié du nom de Jean-Louis Dupont, l'url deviendra fiche-Jean-Louis-Dupont.html, et ton url rewriting va faire la gueule. [Edit :] je suis également en train de penser à deux choses : la première : il faut que tu enlèves les caractères accentuées des prénoms et noms des employés, dans les urls. Et sinon, si jamais tu as deux emplyés de même nom ? (Deux Jean Dupont, par exemple). Si j'ai bien compris, ton url-rewriting ne concerne que les nom et prénom, sur lesquels il y a risque d'y avoir un doublon. Ce que je préconiserais (en fait, ce que j'utilise), c'est de passer l'url de cette manière : fiche-ID-Prénom-Nom.html L'url-rewriting ne récupérant que l'ID (unique par définition) pour la page de traitement, qui n'effectuerait sa requête que sur ce champ (d'où un gain de performances). Et, dans cette optique, les prénoms ou noms composés, n'ont plus d'importance. Modifié 12 Mai 2006 par captain_torche Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 12 Mai 2006 Auteur Partager Posté 12 Mai 2006 (modifié) Non, car d'une part et pour d'autres raisons techniques dirons-nous, il me faut modifier les urls à la "source", c'est à dire directement dans la table. Et (presque) non pour les noms/prénoms, car certaines transformations, et restrictions dans la reconstruction de l'url me permettent d'éviter les pièges à l'exemple du tiret. En fait, mon véritable problème est de récupérer la position du nom et du prenom, ainsi que la position de la balise de fin (">") de la première partie du tag... xpatval [edit]je viens de lire ton post modifié. Tu as donc quelques réponses. Quand à l'id, il fait partie intégrante de l'url reconstruite. Je ne l'ai, c'est vrai, pas précisé.[/edit] Modifié 12 Mai 2006 par xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 12 Mai 2006 Partager Posté 12 Mai 2006 Juste pour info : tes urls actuelles sont-elles susceptibles de contenir des caractères accentués ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 12 Mai 2006 Auteur Partager Posté 12 Mai 2006 Si tu parles des urls non redéfinies, oui, il existe forcément des noms/prénoms possèdant des caractuères accentués. Mais j'ai une moulinette pour cela xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 12 Mai 2006 Partager Posté 12 Mai 2006 Dans ce cas, si tu as suffisamment de temps pour laisser tourner le script, et une fois que tu as enlevé les caractères accentués, fais juste ceci : $search = '`affich_salar.php\?libelle=([a-z-]+),([a-z-]+),_[0-9]{4}`';$replace = 'fiche-$2-$1.html';$new_url = preg_replace($search, $replace, $old_url); Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 12 Mai 2006 Auteur Partager Posté 12 Mai 2006 Je n'y comprends rien dans les regex, mais alors, c'est dingue !! Donc, je souhaite réécrire mes urls, dont certaines sont en nombres dans un champ texte. Les noms/prénoms ayant l'initiale en majuscule, j'ai essayé de tripoter la règle, mais sans succès. ($search = '`affich_salar.php\?libelle=([Aa-z-]+),([Aa-z-]+),_[0-9]{4}`' Par contre, que signifie le {4} ? xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
Julien L. Posté 12 Mai 2006 Partager Posté 12 Mai 2006 (modifié) Les noms/prénoms ayant l'initiale en majuscule, j'ai essayé de tripoter la règle, mais sans succès. ($search = '`affich_salar.php\?libelle=([Aa-z-]+),([Aa-z-]+),_[0-9]{4}`' Par contre, que signifie le {4} ? <{POST_SNAPBACK}> $search = '`affich_salar.php\?libelle=([a-zA-Z]+),([a-zA-Z]+),_[0-9]{4}`'; 4 charactères répondant à la dernière expression soit : [0-9], donc 4 chiffres de 0 à 9. Modifié 12 Mai 2006 par Julien L. Lien vers le commentaire Partager sur d’autres sites More sharing options...
xpatval Posté 12 Mai 2006 Auteur Partager Posté 12 Mai 2006 Super !! Un grand merci à vs... xpatval Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant