2010-05-20 6 views

Répondre

5

...

$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars'; 
$parts = explode('/', $url); 
echo $parts[4]; 

Sortie:

interesting_part 
+2

J'écrivais juste ce que vous avez posté: D –

+0

oh, intelligent! J'essaye cela maintenant, merci beaucoup! – achairapart

+0

@achairapart: Vous êtes les bienvenus :) – Sarfraz

5

Essayez:

<?php 
$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars'; 

preg_match('`/([^/]+)/[^/]*$`', $url, $m); 
echo $m[1]; 
+2

Je ne sais pas pourquoi quelqu'un a fait "-1" à ce sujet. Son équivalent à exploser la chose. Je l'ai repoussé à 0 :) – naugtur

+1

Les gens voient des expressions régulières et ils poignardent leur auteur. – erisco

1

Si la partie intéressante est toujours la dernière partie du chemin:

echo basename(parse_url($url, PHP_URL_PATH)); 

[+] veuillez noter que ceci ne fonctionnera que sans index.php ou tout autre nom de fichier avant ?. Celui-ci fonctionnera pour les deux cas:

$path = parse_url($url, PHP_URL_PATH); 
echo ($path[strlen($path)-1] == '/') ? basename($path) : basename(dirname($path)); 
4

Vous devez utiliser parse_url pour effectuer des opérations avec l'URL. Commencez par l'analyser, puis faites les changements que vous désirez en utilisant, par exemple, l'explosion, puis remettez-les ensemble.

$uri = "http://www.domain.com/something/interesting_part/?somevars&othervars"; 
$uri_parts = parse_url($uri); 

/* 
you should get: 
array(4) { 
    ["scheme"]=> 
    string(4) "http" 
    ["host"]=> 
    string(14) "www.domain.com" 
    ["path"]=> 
    string(28) "/something/interesting_part/" 
    ["query"]=> 
    string(18) "somevars&othervars" 
} 
*/ 

... 

// whatever regex or explode (regex seems to be a better idea now) 
// used on $uri_parts[ "path" ] 

... 

$new_uri = $uri_parts[ "scheme" ] + $uri_parts[ "host" ] ... + $new_path ... 
+0

ouais, c'est vrai: d'abord parse_url, puis explose le chemin comme suggéré par @Sarfraz. merci à tous pour votre aide, autant de retours! – achairapart

+0

Edité avec quelques nouveautés, pour le plus grand bien! –

0

Voici par exemple à l'aide parse_url() pour remplacer la partie spécifique:

<?php 
$arr = parse_url("http://www.domain.com/something/remove_me/?foo&bar"); 
$arr['path'] = "/something/"; 
printf("%s://%s%s?%s", $arr['scheme'], $arr['host'], $arr['path'], $arr['query']); 
Questions connexes