2010-10-14 14 views
0

Je veux utiliser php pour rechercher l'URL actuelle pour com_agora et si elle le juge pour afficher quelque chose et si elle n'a pas pour afficher quelque chose d'autrecaractères php FIND dans l'URL

le problème est qu'il peut y avoir beaucoup de caractères après com_agora dans l'url

un exemple serait ce com_agora&task=cat_view&gid=41&Itemid=

alors comment pourrais-je le dire la trouver en ne se souciant pas ce que les personnages viennent après?

+0

Ce que vous montrez là n'est pas une URL, mais une chaîne de requête . Pouvez-vous montrer une chaîne complète ressemble à celle que vous voulez analyser? Il peut y avoir une solution propre en utilisant les fonctions d'analyse d'URL de PHP, mais il n'est pas encore clair ce qu'il doit faire –

+1

@Pekka: Cela pourrait aussi être un chemin URI. Mais cela ressemble beaucoup à une requête. :) – Gumbo

Répondre

5
$uri = $_SERVER['REQUEST_URI']; // or taken from another source // 
if(strpos($uri, 'com_agora') !== false){ 
    // Your action goes here! // 
} 

Si vous avez besoin d'opérations de paramètres plus complexes, veuillez utiliser parse_str.

2
if(strpos($url, 'com_agora') !== FALSE) { /* do something */ } 
+0

Cela retournera aussi vrai si 'com_agora' fait partie d'une autre variable ou valeur –

+0

@pekka: l'op seulement demandé si com_agora est dans la chaîne, il ne se soucie de rien d'autre dans la chaîne. au moins c'est comme ça que je lis la question – knittl

+0

Je pense que c'est un cas de l'OP ne posant pas la bonne question :) Au moins, il ressemble à l'exemple qu'il donne –

5

Je suppose que vous parlez de la chaîne de requête ici (la partie après le ?)

Pour une approche pare-balles, utilisez parse_str() de démonter la chaîne de requête et de voir s'il y a un paramètre nommé com_agora. Ceci présente l'avantage d'ignorer l'occurrence du terme de recherche n'importe où ailleurs dans la chaîne (par exemple dans une autre valeur de paramètre).

$query_string = $_SERVER["QUERY_STRING"]; // e.g. com_agora&task=cat_view 
$query_string_parsed = array();  

parse_str($query_string, $query_string_parsed); 

// Search for "com_agora" 
$found = array_key_exists("com_agora", $query_string_parsed); 
+0

Pekka comme un boss +1. Ceci est la réponse faisant autorité. –

2

Joomla a une classe qui vous permet de travailler avec l'URL JURI, vous pouvez learn more about JURI class on Joomla's documentation site.

est ici un code entièrement fonctionnel, qui fera ce que vous ce qu'il à faire

<?php 

// Sample URL 
$url = "http://www.mysite.com/index.php?option=com_agora&task=cat_view&gid=41&Itemid=5"; 

// Using JFactory::getURI() without parameter will give you URI of current webpage 
$uri = JFactory::getURI($url); 

// Here is the structure of the object 
// 
//object(JURI)[136] 
// public '_uri' => string 'http://www.mysite.com/index.php?option=com_agora&task=cat_view&gid=41&Itemid=5' (length=78) 
// public '_scheme' => string 'http' (length=4) 
// public '_host' => string 'www.mysite.com' (length=14) 
// public '_port' => null 
// public '_user' => null 
// public '_pass' => null 
// public '_path' => string '/index.php' (length=10) 
// public '_query' => string 'option=com_agora&task=cat_view&gid=41&Itemid=5' (length=46) 
// public '_fragment' => null 
// public '_vars' => 
// array 
//  'option' => string 'com_agora' (length=9) 
//  'task' => string 'cat_view' (length=8) 
//  'gid' => string '41' (length=2) 
//  'Itemid' => string '5' (length=1) 

// Get and output option parameter from the URI 
echo 'Option = ' . $uri->getVar('option'); 
// output = com_agora 

?> 
2

Comme vous dans Joomla faire simplement ceci:

$option = JRequest::getVar('option','','GET'); 

La variable $ option sera alors tenir la valeur de tout ce qui est dans l'URL et vous pouvez alors aller:

if ($option == 'com_agora') { 
    //Do something 
}