2012-08-08 3 views
1

OK, voilà ce que je suis en train de faire (c'est tout à fait un quickie en fait, mais il a décidé de publier en cas nous arrivons à quelque chose de plus intelligent ... :-))Obtenez partie principale URL en PHP

C'est ce que je pensais:

function getMainPart($url) 
{ 
    $parts = explode("/",$url); 
    return str_replace(end($parts),"",$url); 
} 

Avez-vous quelque chose ... plus intelligent ou mieux à suggérer? Des idées? (Ou quelque chose de plus universel/directement soutenus par par PHP?)

Répondre

2

Le « droit »(bien que beaucoup plus longue haleine) façon de le faire:

function getMainPart ($url) { 
    $parts = parse_url($url); 
    if (!isset($parts['scheme'])) { 
     return FALSE; // Not a valid, complete URL 
    } 
    $out = $parts['scheme'].'://'; 
    if (!empty($parts['user'])) { 
     $out .= $parts['user']; 
     if (!empty($parts['pass'])) { 
      $out .= ':'.$parts['pass']; 
     } 
     $out .= '@'; 
    } 
    $out .= $parts['host']; 
    if (!empty($parts['port'])) { 
     $out .= ':'.$parts['port']; 
    } 
    $out .= $parts['path'] == '/' ? '/' : dirname($parts['path']); 
    return $out; 
} 
4

Vous recherchez parse_url:

<?php 
$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_PATH); 
?> 

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
/path 
2

Peut-être que celui-ci peut aider:

echo 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 

Mais cela fonctionne seulement pour le fichier actuel - pas pour chaque URL aléatoire;) pour cela, vous devez utiliser parse_url comme Fluffeh a dit ..

+0

Cela fonctionne pour l'URL du fichier en cours, pas d'URL aléatoire. – Fluffeh

+0

Vous avez raison;) – tuxtimo

+0

Vous voudrez peut-être modifier votre réponse, puis mate :) – Fluffeh

1

Vous aurez besoin du parse_url() fonction pour cela.

$parts = parse_url($url); 
echo $parts['scheme'] ."://". $parts['host'] . $parts['path']; 
1

si `re certain que votre partie principale est toujours avec sa fin/celui-ci est un peu plus courte et ne comporte pas de fonctions-tableau:

$url = 'http://www.somedomain.com/subfolder/yet-another-subfolder/final.php?param=2'; 
function getMainUrlPart($url) { 
    return substr($url, 0, strrpos($url, '/')+1); 
} 
echo getMainUrlPart($url); 
4

Pourquoi ne pas essayer celui-ci:

$main_path = realpath(dirname(\__FILE__)) . "main_folder/";