Réduire en PHP vos urls pour réduire le code HTML

  Information

Pour réduire la taille du code html il est possible de remplacer les chemins absolus par des chemins relatifs.

On peut par exemple supprimer le début de l'url contenant le protocole et le domaine (http://www.domain.tld), remplacer le chemin du répertoire courant par ./, remplacer le chemin du répertoire supérieur par ../, etc

Cette fonction fait ce travaille là. Il suffit de passer en paramètre l'url à raccourcir et l'url de base.

L'url de base correspond à l'url de la page courante (comme dans l'exemple) ou l'url de base si le code HTML contient la balise [<]base href="http://www.domain.tld/unrepertoire/"[>]


Information sur les mises à jour

Dernière mise à jour :

    17 Aout 2019
    fonctionnement du code vérifié

10 805  vues
Compatibilité du code
PHP 5, PHP 7 et PHP 8
  code source classé dans   HTML

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
                               
/*------------------------------*/
/*
Titre : Réduire en PHP vos urls pour réduire le code HTML

Auteur : forty
Website auteur : http://www.toplien.fr/
Date édition : 24 Fev 2009
Date mise a jour : 17 Aout 2019

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*------------------------------*/

function lien_relatif($url, $url_base) {
$resultat = $url;
// récupère le répertoire de l'url de base
$path_point = preg_replace('#/[^/]*$#', '', $url_base);
$replace_path_point = '.';
$racine = 'http://' . $_SERVER['HTTP_HOST'];
if ($path_point == $racine) {
$resultat = preg_replace('/^' . preg_quote($path_point . '/', '/') . '/',
$replace_path_point . '/', $resultat);
} else {
while ($path_point != $racine) {
$resultat = preg_replace('/^' . preg_quote($path_point . '/', '/') . '/',
$replace_path_point . '/', $resultat);
$path_point = preg_replace('#/[^/]*$#', '', $path_point);
$replace_path_point .= '/..';
}
$resultat = preg_replace('/^' . preg_quote($racine . '/', '/') . '/', '/',
$resultat); //Supprime http://www.domain.tld
}
$resultat = preg_replace('/^\.\/([^#?])/', '\\1', $resultat);
//remplace ./x par x
$resultat = preg_replace('/^(\.\.?)\/$/', '\\1', $resultat);
//remplace ./ par . et ../ par ..
return $resultat;
}
?>

Exemple :

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
                                            

// d?termination de l'url de la page courante sans param?tres
if (isset($_SERVER['SCRIPT_URI'])) {
$url_courante = $_SERVER['SCRIPT_URI'];
} else {
$uri = explode('?', $_SERVER['REQUEST_URI']);
$url_courante = 'http://' . $_SERVER['HTTP_HOST'] . $uri[0];
}
?>
<a href="<?php echo lien_relatif('http://www.domain.tld/admin/unepage.html',
$url_courante); ?>">Une page</a>
<a href="<?php echo lien_relatif('http://www.domain.tld/', $url_courante); ?>
">Racine</a>
<a href="<?php echo lien_relatif('http://www.domain.tld/contact.html',
$url_courante); ?>">Contact</a>
<a href="<?php echo lien_relatif('http://www.domain.tld/functions/',
$url_courante); ?>">Toutes les fonctions</a>
<a href="<?php echo lien_relatif(
'http://www.domain.tld/functions/une-fonction.html', $url_courante); ?>
">Une fonction</a>
<a href="<?php echo lien_relatif(
'http://www.domain.tld/functions/otherfunctions/', $url_courante); ?>
">Autres fonctions</a>
<a href="<?php echo lien_relatif(
'http://www.domain.tld/functions/otherfunctions/uneautrefonction2.html',
$url_courante); ?>">Une autre fonction 2</a>
<!--
Si l'url courante est
http://www.domain.tld/functions/functionsunder/uneautrefonction1.html le
r?sultat sera :

<a href="/admin/unepage.html">Une page</a>
<a href="/">Racine</a>
<a href="/contact.html">Contact</a>
<a href="..">Toutes les fonctions</a>
<a href="../une-fonction.html">Une fonction</a>
<a href=".">Autres fonctions</a>
<a href="uneautrefonction2.html">Une autre fonction 2</a>
-->

      Fonctions du code - Doc officielle PHP

Détail    php.net  
Description
Versions PHP
    echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
    explode
Scinde une chaîne de caractères en segments
PHP 4, 5, 7 et 8
    isset
Détermine si une variable est déclarée et est différente de null
PHP 4, 5, 7 et 8
    preg_quote
Protection des caractères spéciaux des expressions régulières
PHP 4, 5, 7 et 8
    preg_replace
Rechercher et remplacer par expression rationnelle standard
PHP 4, 5, 7 et 8
    return
Retourne le controle du programme au module appelant
PHP 4, 5, 7 et 8


 Autres snippets qui pourraient vous intéresser

Analyse la validité d'un code HTML

Compatibilité : PHP 5, PHP 7, PHP 8

Analyse la syntaxe d'un fichier HTML. Retourne un tableau associatif rendant compte des erreurs contenues dans le fichier.

Interpréter du code PHP dans un fichier HTML

Compatibilité : PHP 5, PHP 7, PHP 8

Et oui ce n'est pas du PHP !! Cela se passe coté serveur. Mettez ces 2 lignes de code dans votre fichier .htaccess pour que vos fichiers .htm et .html soient interprét

Colorise du code PHP avec validation HTML

Compatibilité : PHP 5, PHP 7, PHP 8

Colorise du code PHP et utilise la fonction native de PHP : highlight_string (). Ce script permet de valider la colorisation avec le HTML.

* Requêtes exécutées avec Recherche Contextuelle

  Les derniers scripts PHP / MySQL

WebCalendar 1.2.7

Script PHP / MySQL
Langue langue fr
Date  aujourd'hui
Taille 2 Mo
Catégorie Calendriers

Web ERP Accounting 5.0.1

logo Web ERP Accounting
Langue langue us
Date  aujourd'hui
Taille 69 Mo
Catégorie Logiciels

Dolibarr ERP 23.0.0

logo Dolibarr ERP
Langue langue fr
Date  aujourd'hui
Taille 88 Mo
Catégorie Logiciels

Simple Machines Forum 2-1-7

logo Simple Machines Forum
Langue langue fr
Date  aujourd'hui
Taille 4 Mo
Catégorie Forums

Forms Tools 3.1.1

Script PHP / MySQL
Langue langue en
Date  aujourd'hui
Taille 11 Mo
Catégorie Formulaires

ProcessWire 3.0.255

logo ProcessWire
Langue langue fr
Date  aujourd'hui
Taille 14 Mo
Catégorie CMS
avatar

Forty

  24 Fév 2009

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    17 Aout 2019
    fonctionnement du code vérifié

10 805 Vues
Compatibilité du code
PHP 5, PHP 7, PHP 8