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» .



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.';
}

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
}

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


13
if( strpos( $url, $word ) !== false ) {
    // Do something
}


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?


3

Jetez un œil à la fonction strpos :

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


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


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

Cela semble fonctionner.


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 ...


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.

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
}

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;
}

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>';

-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.