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



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

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

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


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


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?


3

Eche un vistazo a la función 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.';
}

Esto parece funcionar.


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


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.

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
}

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

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

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

(> PHP 5)


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.