URL'nin PHP ile belirli dizeleri olup olmadığını kontrol edin


111

URL’de bir kelime bulunup bulunmadığını bilmek istiyorum.

Örneğin, www.domain.com/car/ veya www.domain.com/car/audi/ gibi URL'de araba kelimesi varsa, "araba var" yankılanır ve hiçbir şey yoksa "araba yok" yankılanır. .



Bu aynı zamanda sadece araba kelimesini mi aradığınıza veya aynı zamanda araba veya araba türünü de isteyip istemediğinize bağlıdır. Preg_match, strpos, explode ve in_array / array_search'e ihtiyacınız olabilir, gerçekten buna bağlıdır. basit bir şey istiyorsanız, önerildiği gibi strpos kullanın
Matt


Ya url "korkmuş" kelimesini içeriyorsa? Bu "araba var" yazısı olmalı mı? Değilse, buradaki cevapların çoğu yanlıştır.
doug65536

Yanıtlar:


227

Bunun gibi bir şey dene. İlk satır URL'nizi oluşturur ve geri kalanı "araba" kelimesini içerip içermediğini kontrol eder.

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


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

Projem için mükemmel! Teşekkürler!
WebDevKev

Aradığım buydu. Mükemmel teşekkürler.
JunaidFarooqui

1
Bu iyi bir çözümdür, ancak bunun herhangi bir yerde araba bulunan bir URL ile eşleşeceğine dikkat edin. Örneğin www.domain.com/car-pricingveya www.domain.com/carparksdoğrulayacak ve çıkacak Car exists. Belki senin durumunda önemli değil ama diğerleri için alakalı olabilir!
Javacadabra

Aynen harika arıyorum!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));URL'de 1bulunup categorybulunmadığına bakılmaksızın bana verir . Herhangi bir fikrin neden?
Si8

66

Bence en kolay yol:

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

Mükemmel ... İçinde "etkinlikler" olan herhangi bir url bulmak için example.com/events/pagename ile eşleşmem gerekiyordu ve işe yarıyor!
Tingo

Bunu geçen hafta 4 farklı projede birkaç kez kullandım. Basit. Teşekkürler.
Pegues

Bu tam url'yi test etmez; sadece yol. Şema, etki alanı, bağlantı noktası, sorgu parametreleri veya parçaya göre test yapmaz.
kloddant

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

Kılavuza bakınstrpos


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


4

strstr o zamanlar yok muydu?

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

Bu en kolay yöntemlerden biri olmalı değil mi?


3

Strpos işlevine bir göz atın :

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

Bu işe yarıyor gibi görünüyor.


Buralarda yanlış yol.
Kobus Myburgh

1

Elbette bu doğru yoldur ....

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


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

Aksi takdirde tam tersi şekilde raporlaması gerekir ...


1

Bu benim için çalıştı:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Yankıda HTML kullanmak istiyorsanız, "" yerine "" kullandığınızdan emin olun.
Bu kodu, https://geaskb.nl/ web sayfamda bir uyarı göstermek için kullanıyorum 
URL'nin "Omnik" kelimesini içerdiği yer 
ancak URL’de "Omnik" kelimesini içermeyen sayfalardaki uyarıyı gizleyin.

0

URL parametreleri ve $_GETaslında bir dizi olan global bir değişkenden alınır . Dolayısıyla, bir URL'nin bir parametre içerip içermediğini öğrenmek için isset()işlevi kullanabilirsiniz .

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

Daha sonra, bir URL'ye eklemeniz gereken bu türden ayrı bir parametre dizisi oluşturabilirsiniz.

Örneğin:

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

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

Şimdi, bir ?sembole ihtiyacınız olup olmadığını anlamak için bu diziyi saymanız yeterli

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

Güncelleme:

Herhangi bir parametrenin ayarlanıp ayarlanmadığını öğrenmek için $ _GET sayın

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

bu işlevi bu kod olarak kullanabilirsiniz efendim

 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)


Bu soruyu yanıtlıyor, ancak bunu yapmak için daha iyi yöntemler var ... Bu işlev, bulunan karakterden başlayarak bir dize döndürür ... strpbrk()dokümantasyon burada
jagb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.