Kiểm tra xem URL có chuỗi nhất định với PHP hay không


111

Tôi muốn biết nếu một số từ có trong URL.

Ví dụ: nếu từ ô tô có trong URL, như www.domain.com/car/ hoặc www.domain.com/car/audi/, nó sẽ gọi là "ô tô đang tồn tại" và nếu không có gì, nó sẽ gọi là "không có ô tô" .



Điều này cũng phụ thuộc nếu bạn chỉ tìm kiếm từ ô tô hoặc nếu bạn cũng muốn loại ô tô hoặc các loại ô tô. Bạn có thể cần preg_match, strpos, bùng nổ và in_array / array_search, thực sự chỉ phụ thuộc. nếu bạn muốn một cái gì đó đơn giản, chỉ cần sử dụng strpos như được đề xuất
Matt

Bạn có thể thấy s($_SERVER['REQUEST_URI'])->contains('car')hữu ích, như được tìm thấy trong thư viện độc lập này .
caw

Điều gì sẽ xảy ra nếu url chứa từ "sợ hãi"? Có nên in "ô tô đang tồn tại"? Nếu không, hầu hết các câu trả lời ở đây là sai.
doug65536

Câu trả lời:


227

Hãy thử một cái gì đó như thế này. Hàng đầu tiên xây dựng URL của bạn và phần còn lại kiểm tra xem nó có chứa từ "xe hơi" hay không.

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


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

Hoàn hảo cho dự án của tôi! Cảm ơn!
WebDevKev

Đó là những gì tôi đang tìm kiếm. Hoàn hảo, cảm ơn.
JunaidFarooqui,

1
Đây là một giải pháp tốt nhưng chỉ cần cảnh giác rằng điều này sẽ khớp với một URL có ô tô ở bất kỳ đâu. Ví dụ www.domain.com/car-pricinghoặc www.domain.com/carparkssẽ xác nhận và xuất Car exists. Có thể nó không quan trọng trong trường hợp của bạn nhưng đối với những người khác, nó có thể có liên quan!
Javacadabra

Chính xác là tôi đang tìm kiếm Tuyệt vời!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));cho tôi 1bất kể có categorytồn tại trong Url hay không. Bất kỳ ý tưởng tại sao?
Si8

66

Tôi nghĩ cách dễ nhất là:

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

Hoàn hảo ... Tôi cần đối sánh example.com/events/pagename để tìm bất kỳ url nào có "sự kiện" trong đó và nó hoạt động!
Tingo

Tôi đã sử dụng điều này vài lần trong tuần qua cho 4 dự án khác nhau. Đơn giản. Cảm ơn.
Pegues

Điều này không kiểm tra url đầy đủ; chỉ con đường. Nó sẽ không kiểm tra các tham số lược đồ, miền, cổng, truy vấn hoặc phân đoạn.
kloddant




4

strstr không tồn tại hồi đó?

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

Đây chắc hẳn là một trong những phương pháp dễ dàng nhất phải không?


3

Hãy xem chức năng 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.';
}

Điều này có vẻ hiệu quả.


Đi sai đường ở đây.
Kobus Myburgh

1

Chắc chắn đây là cách chính xác ...

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


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

Nếu không, nó sẽ báo cáo theo cách ngược lại ...


1

Điều này đã làm việc cho tôi:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
Nếu bạn muốn sử dụng HTML trong echo, hãy đảm bảo sử dụng '' thay vì "".
Tôi sử dụng mã này để hiển thị cảnh báo trên trang web của mình https://geaskb.nl/ 
nơi URL chứa từ "Omnik" 
nhưng ẩn cảnh báo trên các trang không chứa từ "Omnik" trong URL.

0

Các tham số URL và nhận được từ một biến toàn cục được gọi $_GETlà thực tế là một mảng. Vì vậy, để biết liệu một URL có chứa tham số hay không, bạn có thể sử dụng isset()hàm.

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

Sau đó, bạn có thể tạo mảng tham số riêng biệt mà bạn cần đính kèm vào URL.

Ví dụ:

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

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

Bây giờ, để biết có hay không, bạn cần một ?ký hiệu, chỉ cần đếm mảng này

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

Cập nhật:

Để biết có tham số nào được đặt hay không, chỉ cần đếm $ _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

bạn có thể sử dụng chức năng này như mã này thưa ông

 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)


Điều này không trả lời câu hỏi nhưng có methodes tốt hơn để làm như vậy ... Hàm này trả về một chuỗi bắt đầu từ nhân vật được tìm thấy ... strpbrk()tài liệu có thể được tìm thấy ở đây
jagb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.