ตรวจสอบว่า URL มีสตริงที่แน่นอนกับ PHP หรือไม่


111

ฉันต้องการทราบว่ามีบางคำอยู่ใน URL หรือไม่

ตัวอย่างเช่นถ้า word car อยู่ใน URL เช่น www.domain.com/car/ หรือ www.domain.com/car/audi/ มันจะสะท้อนว่า "มีรถ" และถ้าไม่มีอะไรก็จะสะท้อนว่า "ไม่มีรถ" .



นอกจากนี้ยังขึ้นอยู่กับว่าคุณกำลังมองหาคำว่ารถหรือถ้าคุณต้องการประเภทของรถหรือรถยนต์ด้วย คุณอาจต้องการ preg_match, strpos, Explode และ in_array / array_search ขึ้นอยู่กับ ถ้าคุณต้องการสิ่งที่ง่ายเพียงแค่ใช้ strpos ตามข้อเสนอแนะ
แมตต์

คุณอาจพบว่ามีs($_SERVER['REQUEST_URI'])->contains('car')ประโยชน์ดังที่พบในไลบรารีแบบสแตนด์อโลนนี้
caw

จะเกิดอะไรขึ้นหาก URL มีคำว่า "กลัว" ควรพิมพ์ว่า "มีรถอยู่" หรือไม่? ถ้าไม่คำตอบส่วนใหญ่ที่นี่ผิด
doug65536

คำตอบ:


227

ลองอะไรแบบนี้ แถวแรกสร้าง URL ของคุณและส่วนที่เหลือตรวจสอบว่ามีคำว่า "car" หรือไม่

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


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

เหมาะสำหรับโครงการของฉัน! ขอบคุณ!
WebDevKev

นั่นคือสิ่งที่ฉันกำลังมองหา สมบูรณ์แบบขอบคุณ
JunaidFarooqui

1
นี่เป็นวิธีแก้ปัญหาที่ดี แต่ระวังว่าจะตรงกับ URL ที่มีรถอยู่ทุกที่ ยกตัวอย่างเช่นwww.domain.com/car-pricingหรือจะยืนยันและเอาท์พุทwww.domain.com/carparks Car existsบางทีมันอาจไม่สำคัญในกรณีของคุณ แต่สำหรับคนอื่นอาจเกี่ยวข้อง!
Javacadabra

ฉันกำลังมองหา Great!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));ให้ฉัน1ไม่ว่าจะcategoryอยู่ใน URL หรือไม่ก็ตาม คิดว่าทำไม?
Si8

66

ฉันคิดว่าวิธีที่ง่ายที่สุดคือ:

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

สมบูรณ์แบบ ... ฉันต้องจับคู่example.com/events/pagenameเพื่อค้นหา URL ใด ๆ ที่มี "เหตุการณ์" อยู่ในนั้นและใช้งานได้!
Tingo

ฉันใช้สิ่งนี้หลายครั้งในสัปดาห์ที่ผ่านมากับ 4 โครงการที่แตกต่างกัน เรียบง่าย ขอบคุณ.
Pegues

สิ่งนี้ไม่ได้ทดสอบ url แบบเต็ม เฉพาะเส้นทาง จะไม่ทดสอบกับโครงร่างโดเมนพอร์ตพารามิเตอร์การสืบค้นหรือส่วนย่อย
kloddant



12

ทำงานให้ฉันด้วย php

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){
echo 'url contains shop';
}

1
นี้เป็นหลักเหมือนกันกับสามคำตอบเก่าของคุณ ทำไมต้องรำคาญโพสต์คำตอบแบบนั้น?
Mark Rotteveel

4

strstr ไม่มีอยู่แล้ว?

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

นี่ต้องเป็นหนึ่งในวิธีที่ง่ายที่สุดใช่ไหม





1

นี่คือวิธีที่ถูกต้องแน่นอน ....

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


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

มิฉะนั้นจะรายงานในทางตรงกันข้าม ...


1

สิ่งนี้ใช้ได้ผลสำหรับฉัน:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
หากคุณต้องการใช้ HTML ในเสียงสะท้อนโปรดใช้ "" แทน ""
ฉันใช้รหัสนี้เพื่อแสดงการแจ้งเตือนบนหน้าเว็บของฉัน https://geaskb.nl/ 
โดย URL มีคำว่า "Omnik" 
แต่ซ่อนการแจ้งเตือนในหน้าที่ไม่มีคำว่า "Omnik" ใน URL

0

พารามิเตอร์ URL และได้รับจากตัวแปรส่วนกลางที่เรียกว่า$_GETอาร์เรย์ ดังนั้นหากต้องการทราบว่า URL มีพารามิเตอร์คุณสามารถใช้isset()ฟังก์ชันนี้ได้

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

หลังจากนั้นคุณสามารถสร้างอาร์เรย์แยกต่างหากของพารามิเตอร์ดังกล่าวที่คุณต้องการแนบไปกับ URL

ตัวอย่างเช่น:

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

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

ตอนนี้หากต้องการทราบว่าคุณต้องมี?สัญลักษณ์เพียงแค่นับอาร์เรย์นี้

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

อัปเดต:

หากต้องการทราบว่ามีการตั้งค่าพารามิเตอร์ใดให้นับ $ _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

คุณสามารถใช้ฟังก์ชันนี้เป็นรหัสนี้ได้

 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)


สิ่งนี้ตอบคำถามได้ แต่มีวิธีการที่ดีกว่าในการทำเช่นนั้น ... ฟังก์ชันนี้จะส่งคืนสตริงโดยเริ่มจากอักขระที่พบ ... strpbrk()สามารถดูเอกสารประกอบได้ที่นี่
jagb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.