在PHP 中處理URL 和其參數是很常見的需求,尤其是在做跳轉判斷、記錄來源或安全驗證等場景中。 stripos()是一個非常實用的函數,它可以用來判斷一個字符串中是否包含另一個字符串,並且是的。
本文將介紹如何使用stripos()來檢查一個URL 中是否包含指定的參數,譬如ref=abc 、 utm_source等。
stripos()是PHP 的內置函數,用法如下:
int|false stripos(string $haystack, string $needle, int $offset = 0)
它返回needle 在haystack 中第一次出現的位置,如果未找到則返回false 。與strpos()不同的是, stripos()不區分大小寫。
假設我們有一個URL:
$url = "https://m66.net/shop/product.php?id=123&ref=abc&utm_source=google";
我們想檢查這個URL 是否包含參數ref=abc 。
<?php
$url = "https://m66.net/shop/product.php?id=123&ref=abc&utm_source=google";
// 要查找的參數
$param = "ref=abc";
// 使用 stripos 進行查找
if (stripos($url, $param) !== false) {
echo "URL 中包含參數 '{$param}'。";
} else {
echo "URL 中不包含參數 '{$param}'。";
}
輸出結果:
URL 中包含參數 'ref=abc'。
stripos()返回的是匹配的位置,而不是布爾值,因此你需要用!== false來判斷是否匹配成功。
stripos()是大小寫不敏感的,如果你想要大小寫敏感的檢查,請使用strpos() 。
如果你要檢測多個參數,建議結合循環使用,或將參數解析成數組再處理。
<?php
$url = "https://m66.net/shop/product.php?id=123&ref=abc&utm_source=google";
$params = ["ref=abc", "utm_source=google", "campaign=summer"];
foreach ($params as $param) {
if (stripos($url, $param) !== false) {
echo "URL 包含參數:{$param}\n";
} else {
echo "URL 不包含參數:{$param}\n";
}
}
使用stripos()是一種簡單而快速的方式來檢查URL 中是否包含某些關鍵字或參數。當你不關心大小寫,或者只是想進行簡單的包含檢查時,它是非常合適的工具。
如果你需要更嚴謹的URL 解析(例如提取參數值、構造查詢字符串等),可以考慮使用parse_url()和parse_str()等函數。
希望這篇文章對你有所幫助!如果你有進一步的問題,歡迎繼續交流!