Maison >développement back-end >tutoriel php >Comment convertir un chemin relatif en URL absolue en utilisant PHP ?

Comment convertir un chemin relatif en URL absolue en utilisant PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 11:52:03224parcourir

How to Convert a Relative Path to an Absolute URL Using PHP?

Transformer les chemins relatifs en URL absolues avec PHP

La conversion des chemins relatifs en URL absolues est essentielle pour travailler avec des ressources Web. Cette tâche peut être accomplie à l'aide de PHP, un langage de script largement utilisé pour le développement Web.

Comment convertir un chemin relatif en URL absolue à l'aide de PHP :

Pour réaliser cette conversion, vous pouvez utiliser la fonction rel2abs() :

function rel2abs($rel, $base)
{
    /* return if already absolute URL */
    if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;

    /* queries and anchors */
    if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;

    /* parse base URL and convert to local variables:
       $scheme, $host, $path */
    extract(parse_url($base));

    /* remove non-directory element from path */
    $path = preg_replace('#/[^/]*$#', '', $path);

    /* destroy path if relative url points to root */
    if ($rel[0] == '/') $path = '';

    /* dirty absolute URL */
    $abs = "$host$path/$rel";

    /* replace '//' or '/./' or '/foo/../' with '/' */
    $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
    for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}

    /* absolute URL is ready! */
    return $scheme.'://'.$abs;
}

Explication :

  1. Vérifiez si le chemin relatif est déjà une URL absolue ( contient un schéma).
  2. Concaténez les requêtes ou les ancres avec l'URL de base.
  3. Analysez l'URL de base en ses composants de schéma, d'hôte et de chemin.
  4. Convertissez le relatif fourni chemin dans une URL absolue "sale".
  5. Remplacez de manière itérative les modèles tels que "//" ou "/./" ou "/foo/../" par "/" pour nettoyer l'URL absolue.
  6. Renvoyer l'URL absolue nettoyée.

Utilisation :

Vous pouvez utiliser cette fonction pour transformer n'importe quel chemin relatif en son URL absolue correspondante. Par exemple, les extraits suivants illustrent comment transformer un chemin relatif en URL absolue :

$rel_path = "images/profile.jpg";
$base_url = "https://example.com/";

$abs_url = rel2abs($rel_path, $base_url); // Output: "https://example.com/images/profile.jpg"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn