Compruebe si la URL tiene cierta cadena con PHP

111

Me gustaría saber si hay alguna palabra presente en la URL.

Por ejemplo, si la palabra coche está en la URL, como www.domain.com/car/ o www.domain.com/car/audi/, se repetirá "el coche existe" y si no hay nada, se repetirá "no hay coches". .

pisoe
fuente
Esto también depende de si solo busca la palabra automóvil o si también desea el tipo de automóvil o automóviles. Es posible que necesite preg_match, strpos, explotar e in_array / array_search, realmente depende. si quieres algo simple, simplemente usa strpos como se sugiere
Matt
Puede resultarle s($_SERVER['REQUEST_URI'])->contains('car')útil, como se encuentra en esta biblioteca independiente .
caw
¿Qué pasa si la URL contiene la palabra "asustado"? ¿Debería existir esa impresión "coche es"? Si no, la mayoría de las respuestas aquí son incorrectas.
doug65536

Respuestas:

227

Prueba algo como esto. La primera fila crea su URL y el resto comprueba si contiene la palabra "coche".

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


if (strpos($url,'car') !== false) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}
digi
fuente
¡Perfecto para mi proyecto! ¡Gracias!
WebDevKev
Eso es lo que estaba buscando. Perfecto gracias.
JunaidFarooqui
1
Esta es una buena solución, pero tenga cuidado de que coincidirá con una URL que tenga un automóvil en cualquier lugar. Por ejemplo, www.domain.com/car-pricingo www.domain.com/carparksvalidará y dará salida Car exists. ¡Quizás no importe en tu caso, pero para otros puede ser relevante!
Javacadabra
Exactamente estoy buscando ¡Genial!
Vignesh Krishnamoorthy
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));me da 1independientemente de si categoryexiste en la URL o no. ¿Alguna idea de por qué?
Si8
66

Creo que la forma más sencilla es:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}
Santi Núñez
fuente
Perfecto ... Necesitaba hacer coincidir example.com/events/pagename para encontrar cualquier URL con "eventos" en ellos y ¡funciona!
Tingo
He usado esto varias veces durante la semana pasada en 4 proyectos diferentes. Sencillo. Gracias.
Pegues
Esto no prueba la URL completa; solo el camino. No probará con el esquema, dominio, puerto, parámetros de consulta o fragmento.
kloddant
22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

Ver strposmanual

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

funcionó para mí con php

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){
echo 'url contains shop';
}
Shuhad zaman
fuente
1
Esto es esencialmente idéntico a estos tres su respuesta anterior . ¿Por qué molestarse en publicar una respuesta como esa?
Mark Rotteveel
4

¿strstr no existía en ese entonces?

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

Este debe ser uno de los métodos más fáciles, ¿verdad?

Mathijs Segers
fuente
3

Eche un vistazo a la función strpos :

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


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

Esto parece funcionar.

Richard Andrew Lee
fuente
Camino equivocado por aquí.
Kobus Myburgh
1

Seguramente este es el camino correcto ...

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


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

De lo contrario, está informando de la manera opuesta que debería ...

Mikeys4u
fuente
1

Esto funcionó para mí:

// 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 desea utilizar HTML en el eco, asegúrese de utilizar '' en lugar de "".
Utilizo este código para mostrar una alerta en mi página web https://geaskb.nl/ 
donde la URL contiene la palabra "Omnik" 
pero oculte la alerta en páginas que no contengan la palabra "Omnik" en la URL.
Marte
fuente
0

Los parámetros de URL y recibidos de una variable global llamada $_GETque de hecho es una matriz. Entonces, para saber si una URL contiene un parámetro, puede usar la isset()función.

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

Posteriormente, puede crear una matriz separada de dicho parámetro que necesita adjuntar a una URL.

Por ejemplo:

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

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

Ahora, para saber si necesita o no un ?símbolo, solo cuente esta matriz

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

Actualizar:

Para saber si se establece algún parámetro, solo cuente $ _GET

if(count($_GET)) {
     //some parameters are set
}
usuario3131771
fuente
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
fuente
0

puede usar esta función como este código señor

 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
fuente
-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)

Dmitry G
fuente
Esto responde la pregunta, pero hay mejores métodos para hacerlo ... Esta función devuelve una cadena a partir del carácter encontrado ... la strpbrk()documentación se puede encontrar aquí
jagb