在PHP 開發中,我們經常需要對電子郵件地址進行驗證或分析。例如,你可能需要檢查一個郵件地址是否屬於特定的域名(如gmail.com 、 m66.net等)。這時候, stripos()函數就可以派上用場了。
stripos()是PHP 中的一個字符串函數,用於查找某個子字符串在目標字符串中第一次出現的位置。與strpos()不同的是, stripos()不區分大小寫,這在處理郵件地址時非常有用,因為電子郵件地址的域名部分通常是大小寫不敏感的。
函數定義如下:
int|false stripos ( string $haystack , mixed $needle [, int $offset = 0 ] )
$haystack是要搜索的字符串。
$needle是你想查找的內容。
$offset是可選參數,表示開始搜索的位置。
如果找到了,返回位置索引(從0 開始);如果沒有找到,返回false 。
我們來看一個實際的例子。假設你想判斷一個用戶提交的郵箱地址是否屬於m66.net域:
<?php
function isM66Email($email) {
// 提取郵箱的域名部分
$domain = substr(strrchr($email, "@"), 1);
// 使用 stripos 判斷是否是 m66.net
if (stripos($domain, 'm66.net') !== false) {
return true;
}
return false;
}
// 示例郵箱
$email1 = 'user123@m66.net';
$email2 = 'someone@gmail.com';
var_dump(isM66Email($email1)); // 輸出: bool(true)
var_dump(isM66Email($email2)); // 輸出: bool(false)
?>
使用strrchr($email, "@")獲取郵箱中最後一個@之後的字符串,即域名。
用substr()去掉開頭的@符號。
使用stripos()查找域名中是否包含m66.net 。
注意stripos()返回的是位置索引(可能是0 ),因此必須用全等!== false來判斷是否找到。
判斷郵箱是否來自某個特定的公司或組織。
批量過濾某個域名的註冊用戶。
對不同域名的郵箱做個性化處理。
雖然stripos()很方便,但如果你只想精確匹配域名,不希望abc.m66.net這樣的子域也被匹配上,建議你使用更嚴格的字符串比較方法,例如: