Periksa apakah URL memiliki string tertentu dengan PHP

111

Saya ingin tahu apakah ada kata di URL.

Misalnya, jika kata mobil ada di URL, seperti www.domain.com/car/ atau www.domain.com/car/audi/ itu akan menggemakan 'mobil ada' dan jika tidak ada, itu akan menggema 'tidak ada mobil' .

pisoe
sumber
Ini juga tergantung apakah Anda hanya mencari kata mobil atau apakah Anda juga menginginkan jenis mobil atau mobilnya juga. Anda mungkin membutuhkan preg_match, strpos, explode dan in_array / array_search, benar-benar tergantung. jika Anda menginginkan sesuatu yang sederhana, cukup gunakan strpos seperti yang disarankan
Matt
Anda mungkin merasa s($_SERVER['REQUEST_URI'])->contains('car')terbantu, seperti yang ditemukan di perpustakaan mandiri ini .
gak
Bagaimana jika url berisi kata "takut"? Haruskah tulisan "mobil itu ada"? Jika tidak, sebagian besar jawaban di sini salah.
doug65536

Jawaban:

227

Cobalah sesuatu seperti ini. Baris pertama membangun URL Anda dan sisanya memeriksa apakah mengandung kata "mobil".

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


if (strpos($url,'car') !== false) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}
digi
sumber
Sempurna untuk proyek saya! Terima kasih!
WebDevKev
Itulah yang saya cari. Sempurna, Terima kasih.
JunaidFarooqui
1
Ini adalah solusi yang bagus tetapi berhati-hatilah karena ini akan cocok dengan URL yang memiliki mobil di mana saja. Misalnya www.domain.com/car-pricingatau www.domain.com/carparksakan memvalidasi dan mengeluarkan Car exists. Mungkin itu tidak masalah dalam kasus Anda, tetapi untuk orang lain mungkin relevan!
Javacadabra
Persis saya mencari Great!
Vignesh Krishnamoorthy
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));memberi saya 1terlepas dari apakah categoryada di Url atau tidak. Tahu kenapa?
Si8
66

Menurut saya cara termudah adalah:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}
Santi Nunez
sumber
Sempurna ... Saya perlu mencocokkan example.com/events/pagename untuk menemukan url dengan "peristiwa" di dalamnya dan berhasil!
Tingo
Saya telah menggunakan ini beberapa kali dalam seminggu terakhir pada 4 proyek berbeda. Sederhana. Terima kasih.
Pegues
Ini tidak menguji url lengkap; hanya jalannya. Ini tidak akan menguji skema, domain, port, parameter kueri, atau fragmen.
kloddant
22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

Lihat strposmanual

J0HN
sumber
13
if( strpos( $url, $word ) !== false ) {
    // Do something
}
tak seorangpun
sumber
12

bekerja untuk saya dengan php

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){
echo 'url contains shop';
}
Shuhad zaman
sumber
1
Ini pada dasarnya identik dengan ketiga jawaban lama Anda ini . Mengapa repot-repot memposting jawaban seperti itu?
Mark Rotteveel
4

strstr tidak ada saat itu?

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

Ini pasti salah satu cara termudah kan?

Mathijs Segers
sumber
3

Lihat fungsi strpos :

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


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

Sepertinya ini berhasil.

Richard Andrew Lee
sumber
Di sekitar sini salah.
Kobus Myburgh
1

Tentunya ini adalah cara yang benar ....

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


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

Jika tidak, pelaporannya berlawanan dengan cara seharusnya ...

Mikeys4u
sumber
1

Ini berhasil untuk saya:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Jika Anda ingin menggunakan HTML dalam gema, pastikan untuk menggunakan '' bukan "".
Saya menggunakan kode ini untuk menunjukkan peringatan di halaman web saya https://geaskb.nl/ 
yang URL-nya berisi kata "Omnik" 
tapi sembunyikan peringatan di halaman yang tidak mengandung kata "Omnik" di URL-nya.
Mars
sumber
0

Parameter URL dan diterima dari variabel global yang disebut $_GETyang sebenarnya adalah array. Jadi, untuk mengetahui apakah suatu URL berisi parameter, Anda bisa menggunakan isset()fungsinya.

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

Setelah itu, Anda dapat membuat array terpisah dari parameter tersebut yang perlu Anda lampirkan ke URL.

Sebagai contoh:

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

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

Nah, untuk mengetahui perlu atau tidaknya sebuah ?simbol, hitung saja larik ini

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

Memperbarui:

Untuk mengetahui apakah ada parameter yang disetel, cukup hitung $ _GET

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

Anda dapat menggunakan fungsi ini sebagai pak kode ini

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

(> PHP 5)

Dmitry G
sumber
Ini menjawab pertanyaan tetapi ada metode yang lebih baik untuk melakukannya ... Fungsi ini mengembalikan string yang dimulai dari karakter yang ditemukan ... strpbrk()dokumentasi dapat ditemukan di sini
jagb