J'ai besoin d'une partie d'une URL extraite.Extraire une partie de l'URL pour une chaîne de requête
Exemple:
http://www.domain.com/blog/entry-title/?standalone=1
est l'URL donnée.
blog/entry-title
doit être extrait.
Toutefois, l'extraction doit également fonctionner avec http://www.domain.com/index.php/blog/[…]
comme URL donnée.
Ce code est pour un système de gestion de contenu.
Ce que je suis venu avec déjà est la suivante:
function getPathUrl() {
$folder = explode('/', $_SERVER['SCRIPT_NAME']);
$script_filename = pathinfo($_SERVER['SCRIPT_NAME']); // supposed to be 'index.php'
$request = explode('/', $_SERVER['REQUEST_URI']);
// first element is always ""
array_shift($folder);
array_shift($request);
// now it's only the request url. filtered out containing folders and 'index.php'.
$final_request = array_diff($request, array_intersect($folder, $request));
// the indexes are mangled up in a strange way. turn 'em back
$final_request = array_values($final_request);
// remove empty elements in array (caused by superfluent slashes, for instance)
array_clean($final_request);
// make a string out of the array
$final_request = implode('/', $final_request);
if ($_SERVER['QUERY_STRING'] || substr($final_request, -1) == '?') {
$final_request = substr($final_request, 0, - strlen($_SERVER['QUERY_STRING']) - 1);
}
return $final_request;
}
Cependant, ce code ne prend pas soin des arguments à la fin de l'URL (comme ?standalone=1
). Cela fonctionne pour les ancres (#read-more
), cependant.
Merci beaucoup les gars et amusez-vous à tordre votre cerveau. Peut-être que nous pouvons faire cette merde avec une expression régulière.
J'ai oublié de mentionner que le index.php peut être en répertoire physique, tel que 'http: // www.domain.com/cms /'. Mon code fonctionne jusqu'à présent et grâce à la fonction 'parse_url' vous me l'avez référé maintenant ignore également les arguments supplémentaires de la chaîne de requête. Salut, mon pote! – Daniel