Vérifiez si l'URL a une certaine chaîne avec PHP

111

Je voudrais savoir si un mot est présent dans l'URL.

Par exemple, si le mot voiture est dans l'URL, comme www.domain.com/car/ ou www.domain.com/car/audi/, il ferait écho à «voiture existe» et s'il n'y a rien, il ferait écho à «pas de voitures» .

Pisoe
la source
Cela dépend également si vous recherchez simplement le mot voiture ou si vous voulez également le type de voiture ou de voitures. Vous pourriez avoir besoin de preg_match, strpos, explode et in_array / array_search, cela dépend vraiment. si vous voulez quelque chose de simple, utilisez simplement les strpos comme suggéré
Matt
Vous pourriez trouver s($_SERVER['REQUEST_URI'])->contains('car')utile, comme trouvé dans cette bibliothèque autonome .
caw
Que faire si l'URL contient le mot "peur"? Est-ce que cette impression "voiture existe"? Sinon, la plupart des réponses ici sont fausses.
doug65536

Réponses:

227

Essayez quelque chose comme ça. La première ligne construit votre URL et le reste vérifie si elle contient le mot «voiture».

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (strpos($url,'car') !== false) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}
digi
la source
Parfait pour mon projet! Merci!
WebDevKev
C'est ce que je cherchais. Parfait merci.
JunaidFarooqui
1
C'est une bonne solution, mais méfiez-vous simplement que cela correspondra à une URL qui a une voiture n'importe où. Par exemple, www.domain.com/car-pricingou www.domain.com/carparksvalidera et sortira Car exists. Peut-être que cela n'a pas d'importance dans votre cas, mais pour d'autres, cela pourrait être pertinent!
Javacadabra
Exactement je cherche Great!
Vignesh Krishnamoorthy
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));me donne 1indépendamment du fait qu'il categoryexiste dans l'URL ou non. Une idée pourquoi?
Si8
66

Je pense que le moyen le plus simple est:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}
Santi Nunez
la source
Parfait ... J'avais besoin de faire correspondre example.com/events/pagename pour trouver toutes les URL contenant des "événements" et cela fonctionne!
Tingo
J'ai utilisé ceci plusieurs fois la semaine dernière sur 4 projets différents. Facile. Merci.
Pegues
Cela ne teste pas l'URL complète; seulement le chemin. Il ne testera pas le schéma, le domaine, le port, les paramètres de requête ou le fragment.
kloddant
22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

Voir strposmanuel

J0HN
la source
13
if( strpos( $url, $word ) !== false ) {
    // Do something
}
personne
la source
12

travaillé pour moi avec php

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){
echo 'url contains shop';
}
Shuhad zaman
la source
1
C'est essentiellement identique à ces trois votre ancienne réponse . Pourquoi se donner la peine de poster une réponse comme ça?
Mark Rotteveel
4

strstr n'existait pas à l'époque?

if(strstr($_SERVER['REQUEST_URI'], "car")) {
   echo "car found";
}

Cela doit être l'une des méthodes les plus simples, non?

Mathijs Segers
la source
3

Jetez un œil à la fonction strpos :

if(false !== strpos($url,'car')) {
    echo 'Car exists!';
}
else {
    echo 'No cars.';
}
Jeff
la source
1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (!strpos($url,'car')) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}

Cela semble fonctionner.

Richard Andrew Lee
la source
Mauvaise façon ici.
Kobus Myburgh
1

C'est sûrement le bon chemin ...

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (!strpos($url,'mysql')) {
echo 'No mysql.'; //swapped with other echo statement
} else {
echo 'Mysql exists.';
}

Sinon, son rapport est le contraire, il devrait ...

Mikeys4u
la source
1

Cela a fonctionné pour moi:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Si vous souhaitez utiliser HTML dans l'écho, assurez-vous d'utiliser '' au lieu de "".
J'utilise ce code pour afficher une alerte sur ma page Web https://geaskb.nl/ 
où l'URL contient le mot "Omnik" 
mais masquez l'alerte sur les pages qui ne contiennent pas le mot «Omnik» dans l'URL.
Mars
la source
0

Les paramètres d'URL et reçus d'une variable globale appelée $_GETqui est en fait un tableau. Ainsi, pour savoir si une URL contient un paramètre, vous pouvez utiliser la isset()fonction.

if (isset($_GET['yourparametername'])) {
//The parameter you need is present
}

Ensuite, vous pouvez créer un tableau séparé de ces paramètres que vous devez attacher à une URL.

Par exemple:

if(isset($_GET['param1'])) {
\\The parameter you need is present
$attachList['param1'] = $_GET['param1'];
}

if(isset($_GET['param2'])) {
$attachList['param2'] = $_GET['param2];
}

Maintenant, pour savoir si vous avez besoin d'un ?symbole ou non, comptez simplement ce tableau

if(count($attachList)) {
    $link .= "?";
    // and so on
}

Mettre à jour:

Pour savoir si un paramètre est défini, comptez simplement le $ _GET

if(count($_GET)) {
     //some parameters are set
}
user3131771
la source
0
if ( stristr( SITE_HOST, 'your site' ) ) {
    $protocol = ( !empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://';
    $request = ( !empty( $_SERVER['HTTP_X_ORIGINAL_REQUEST'] ) ) ? $_SERVER['HTTP_X_ORIGINAL_REQUEST'] : $_SERVER['REQUEST_URI'];
    echo $protocol .'your site'. $request;
}
derald collado
la source
0

vous pouvez utiliser cette fonction comme ce code monsieur

 if((strpos($_SERVER['REQUEST_URI'],'car') !== false))
        echo'<h3 class=" edit-top">Car Exist</h3>';
    else
        echo'<h3 class=" edit-top">Not</h3>';
Adel Abou Elezz
la source
-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)

Dmitry G
la source
Cela répond à la question mais il existe de meilleures méthodes pour le faire ... Cette fonction renvoie une chaîne commençant par le caractère trouvé ... la strpbrk()documentation peut être trouvée ici
jagb