2009-11-20 2 views
0

Cela doit être assez simple, mais je voudrais analyser l'URL actuelle et exécuter le code conditionnel selon que l'utilisateur est sur le /sitemap/ répertoire.PHP: analyser l'URL pour le répertoire correspondant/somedirectory/et exécuter le code conditionnel

Ainsi, par exemple, si le site est example.com, et si la demande est example.com/sitemap/. Puis je veux exécuter le code conditionnel dans ce cas. J'utilise wordpress donc je ne suis pas sûr s'il y a une fonction intégrée qui obtient ceci ...

Une solution PHP pure est très bien.

Répondre

4

Je ne sais pas si Wordpress a une fonction pour cela. Mais vous pouvez le faire:

$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\\?.*/', '', $_SERVER['REQUEST_URI']); 

$_SERVER['REQUEST_URI'] contient le chemin URI ainsi que la requête et le code ci-dessus juste obtenir le chemin URI. Ensuite, vous pouvez le comparer à votre chaîne:

if ($_SERVER['REQUEST_URI_PATH'] == '/sitemap/') { 
    // URI path is "/sitemap/" 
} 

Ou vous faire un commence par test:

$start = '/sitemap/'; 
if (substr($_SERVER['REQUEST_URI_PATH'], 0, strlen($start)) == $start) { 
    // URI path starts with "/sitemap/" 
} 
+0

Merci Gumbo. Exactement ce que je cherchais. –

0

Vous pouvez utiliser l'accumulation dans les variables du serveur web pour cela. Voici quelques exemples:

  • $_SERVER['HTTP_HOST'] - nom d'hôte de la demande actuelle
  • $_SERVER['REQUEST_URI'] - url demandée avec les paramètres get

Vous pouvez également voir la liste complète par print_r($_SERVER);.

0
$paths = explode ('/', $_SERVER['PHP_SELF']); 

Cela vous donnera un tableau de chemins pour le script donné. Vous pouvez effectuer une logique basée sur le tableau résultant.

+0

Note: PHP_SELF est le "chemin du web" où PATH_TRANSLATED est le "chemin du système de fichiers" – ChronoFish

+0

Comme noté par Ivan HTTP_HOST vous donnera votre nom d'hôte .... – ChronoFish

2

Et vous exécutez phpinfo() dans un script simple, vous verrez tout ce que vous voudrez peut-être obtenir de PHP pur. (Et beaucoup d'autres choses aussi, juste faire défiler vers le bas de la sortie pour les variables PHP.)

+0

Alors qu'une réponse round-a-combat, je pensais à suggérant la même chose. Je suis content que vous l'ayez jeté dehors. – ChronoFish

0
current(explode('/', trim($_SERVER['REQUEST_URI'], '/'))) 

retournera la première partie de l'URL

explode('/', trim($_SERVER['REQUEST_URI'], '/')) 

va créer un tableau de pièces url

0

Avec la ligne suivante de code PHP que vous obtiendrez l'URL de la requête HTTP de la page en cours:

$ url = ((preg_match ("/ (^ \ z |^off \ z)/i ", $ _SERVER ['HTTPS'])? 'ht tp: // ':' https: // '). $ _SERVER ['HTTP_HOST'].$ _SERVER ['REQUEST_URI'];

Ensuite, vous pouvez analyser cette URL pour obtenir un tableau de résultat fiable comme ceci:

  • [SCHEMA] => http
  • [AUTORITÉ] => utilisateur: [email protected] : 80
  • [USERINFO] => utilisateur: passe
  • [uSER] => utilisateur
  • [PASS] => passe
  • [HOST] => www.domain.com
  • [nomreg] => www.domain.com
  • [DOMAIN] => www.domain.com
  • [LABEL] [] =>
  • [LABEL] [] => com
  • [ LABEL] [] => domaine
  • [LABEL] [] => www
  • [PORT] => 80
  • [path] => /dir1/dir2/dir3/page.html
  • [SEGMENT ] [] => dir1
  • [SEGMENT] [] => dir2
  • [SEGMENT] [] => rep3
  • [SEGMENT] [] => page.html
  • [QUERY] => clé1 = valeur1 & key2 = valeur2
  • [GET] [key1] => valeur1
  • [GET] [key2] => valeur2
  • [FRAGMENTS] => ancre/ligne
  • [aNCRE] [] => ancre
  • [aNCRE] [] => ligne

Il y a un standard PHP conforme, robuste et performante de classe pour la manipulation et l'analyse syntaxique des URL/URIs selon RFC 3986 et RFC 3987 disponible pour le téléchargement et gratuit:

http://andreas-hahn.com/en/parse-url