Verifique se o URL tem certa string com PHP


111

Gostaria de saber se alguma palavra está presente no URL.

Por exemplo, se a palavra carro estiver no URL, como www.domain.com/car/ ou www.domain.com/car/audi/, ela ecoará 'carro é existe' e, se não houver nada, será exibido 'sem carros' .



Isso também depende se você está procurando apenas a palavra carro ou se também deseja o tipo de carro ou carros. Você pode precisar de preg_match, strpos, explode e in_array / array_search, realmente só depende. se você quiser algo simples, use strpos conforme sugerido
Matt


E se o url contiver a palavra "medo"? Essa impressão "carro existe existe"? Caso contrário, a maioria das respostas aqui está errada.
doug65536

Respostas:


227

Experimente algo assim. A primeira linha cria seu URL e o resto verifica se ele contém a palavra "carro".

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


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

Perfeito para o meu projeto! Obrigado!
WebDevKev

É isso que eu estava procurando. Perfeito, obrigado.
JunaidFarooqui

1
Essa é uma boa solução, mas fique atento para que ela corresponda a um URL que tenha carro em qualquer lugar. Por exemplo, www.domain.com/car-pricingou www.domain.com/carparksvalidará e produzirá Car exists. Talvez não importe no seu caso, mas para outros pode ser relevante!
Javacadabra

Exatamente estou procurando Ótimo!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));dá-me 1independentemente de categoryexistir ou não no Url. Alguma ideia do porquê?
Si8

66

Acho que a maneira mais fácil é:

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

Perfeito ... Eu precisava combinar example.com/events/pagename para encontrar quaisquer urls com "eventos" neles e funcionou!
Tingo

Usei isso várias vezes na semana passada em 4 projetos diferentes. Simples. Obrigado.
Pegues

Isso não testa o url completo; apenas o caminho. Ele não testará em relação ao esquema, domínio, porta, parâmetros de consulta ou fragmento.
Kloddant

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

Veja o strposmanual


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


4

strstr não existia naquela época?

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

Este deve ser um dos métodos mais fáceis, certo?


3

Dê uma olhada na função 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.';
}

Isso parece funcionar.


Caminho errado por aqui.
Kobus Myburgh

1

Certamente esta é a maneira correta de contornar ....

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


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

Caso contrário, ele está relatando da maneira oposta que deveria ...


1

Isso funcionou para mim:

// 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 você quiser usar HTML no eco, certifique-se de usar '' em vez de "".
Eu uso este código para mostrar um alerta em minha página da web https://geaskb.nl/ 
onde o URL contém a palavra "Omnik" 
mas oculte o alerta em páginas que não contenham a palavra "Omnik" no URL.

0

Os parâmetros de URL são recebidos de uma variável global chamada $_GETque é na verdade uma matriz. Então, para saber se um URL contém um parâmetro, você pode usar a isset()função.

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

Posteriormente, você pode criar uma matriz separada de tal parâmetro que você precisa anexar a um URL.

Por exemplo:

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

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

Agora, para saber se você precisa ou não de um ?símbolo, basta contar este array

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

Atualizar:

Para saber se algum parâmetro está definido, basta contar o $ _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

você pode usar esta função como este código senhor

 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)


Isso responde à pergunta, mas existem métodos melhores para fazer isso ... Esta função retorna uma string começando com o caractere encontrado ... a strpbrk()documentação pode ser encontrada aqui
jagb
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.