La fonction rel2abs()
Rédigé par Jean-Pierre Pourrez - - 3 commentairesL'adresse de base du site n'a pas plus besoin de finir avec "/". La fonction corrige cela automatiquement. Il n'est pas nécessaire d'indiquer le nom du serveur (hostname). Différents protocoles sont acceptés dans les liens. Les motifs de recherche et de remplacement sont passés sous forme de tableaux à la fonction str_replace(). On la préfère à la complexe fonction preg_replace() qui plus lente. Pour tester, vous pouvez utiliser le bac à sable en cliquant ici.
Les 2 premiers motifs de $patterns concernent les liens vers des sites externes. On les préserve de toute transformation dans $html en remplaçant "=" par $mask. On opérera la transformation inverse à la fin du traitement.
Le 3ème motif de $patterns concerne les liens relatifs sur le site, c'est à dire ne commençant par "/".
En début d'étude, il n'était pas prévu que les liens qui pointent vers une autre page du site, débutent par le nom du serveur (hostname). C'est inutile. Sauf que Pluxml le fait. Donc si $base commence par le nom du serveur, alors on ajoute un 4ème motif à $patterns.
Il ne reste plus qu'à faire les remplacements avec preg_replace qui accepte les tableaux pour les 2 premiers paramètres. Le dernier remplacement pour $mask se fera simplement avec str_replace puisque aucune expression régulière n'est utilisée.
#1 - Gaspard Demare a dit :