Controlla se l'URL ha una certa stringa con PHP


111

Vorrei sapere se nell'URL è presente una parola.

Ad esempio, se la parola auto è nell'URL, come www.domain.com/car/ o www.domain.com/car/audi/, echeggia "car is exist" e se non c'è niente echo "no cars" .



Questo dipende anche se stai cercando solo la parola auto o se vuoi anche il tipo di auto o anche le auto. Potresti aver bisogno di preg_match, strpos, explode e in_array / array_search, in realtà dipende solo. se vuoi qualcosa di semplice, usa strpos come suggerito
Matt


E se l'URL contiene la parola "spaventato"? Quella stampa "l'auto esiste"? In caso contrario, la maggior parte delle risposte qui sono sbagliate.
doug65536

Risposte:


227

Prova qualcosa di simile. La prima riga crea il tuo URL e il resto controlla se contiene la parola "car".

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


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

Perfetto per il mio progetto! Grazie!
WebDevKev

Questo è quello che stavo cercando. Perfetto grazie.
JunaidFarooqui

1
Questa è una buona soluzione, ma fai attenzione che corrisponderà a un URL con auto ovunque. Ad esempio www.domain.com/car-pricingo www.domain.com/carparksconvaliderà e produrrà Car exists. Forse non importa nel tuo caso, ma per altri potrebbe essere rilevante!
Javacadabra,

Cerco esattamente fantastico!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));mi dà 1indipendentemente dal fatto che categoryesista o meno nell'URL. Qualche idea sul perché?
Si8

66

Penso che il modo più semplice sia:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}

Perfetto ... dovevo abbinare example.com/events/pagename per trovare eventuali URL contenenti "eventi" e funziona!
Tingo

L'ho usato più volte la scorsa settimana su 4 diversi progetti. Semplice. Grazie.
Pegues

Questo non verifica l'URL completo; solo il sentiero. Non verrà eseguito il test rispetto a schema, dominio, porta, parametri di query o frammento.
kloddant

22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

Vedi strposmanuale


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


4

strstr non esisteva allora?

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

Questo deve essere uno dei metodi più semplici, giusto?


3

Dai un'occhiata alla funzione 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.';
}

Sembra funzionare.


Modo sbagliato qui intorno.
Kobus Myburgh

1

Sicuramente questo è il modo corretto di aggirare ...

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


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

Altrimenti sta riportando nel modo opposto dovrebbe ...


1

Questo ha funzionato per me:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Se vuoi usare HTML nell'eco, assicurati di usare "" invece di "".
Uso questo codice per mostrare un avviso sulla mia pagina web https://geaskb.nl/ 
dove l'URL contiene la parola "Omnik" 
ma nascondi l'avviso nelle pagine che non contengono la parola "Omnik" nell'URL.

0

I parametri dell'URL e ricevuti da una variabile globale chiamata $_GETche in realtà è un array. Quindi, per sapere se un URL contiene un parametro, puoi utilizzare la isset()funzione.

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

Successivamente, puoi creare un array separato di tale parametro che devi allegare a un URL.

Per esempio:

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

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

Ora, per sapere se hai bisogno o meno di un ?simbolo, conta semplicemente questo array

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

Aggiornare:

Per sapere se è impostato un parametro, conta solo $ _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

potete usare questa funzione come questo codice signore

 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)


Questo risponde alla domanda ma ci sono metodi migliori per farlo ... Questa funzione restituisce una stringa a partire dal carattere trovato ... la strpbrk()documentazione può essere trovata qui
jagb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.