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.