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



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

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
}

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




4

strstr tidak ada saat itu?

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

Ini pasti salah satu cara termudah kan?


3

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

Sepertinya ini berhasil.


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


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.

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
}

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

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

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

(> PHP 5)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.