Aller au contenu

conversion d'urls


xpatval

Sujets conseillés

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

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é par captain_torche
Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par xpatval
Lien vers le commentaire
Partager sur d’autres sites

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

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

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

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é par Julien L.
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...