在 PHP 開發中,確認某個子字串是否存在於另一個字串中,並獲取其位置或後續內容,是常見的需求。strstr() 函數正是為此而生,它能搜尋字串在另一字串中首次出現的位置,並返回從該位置開始到字串結尾的部分。若未找到則返回 false。
strstr(string $haystack, string $needle, bool $before_needle = false): string|false
true,則返回 $needle 之前的部分(PHP 5.3.0+ 支援)。以下範例示範如何從電子郵件地址中提取域名部分:
<?php
$email = 'user@example.com';
// 尋找 '@' 符號並返回其及後續內容
$result = strstr($email, '@');
echo $result; // 輸出:@example.com
?>
若需要知道子字串確切的數字索引位置,建議使用 strpos():
<?php
$email = 'user@example.com';
$position = strpos($email, '@');
if ($position !== false) {
echo "找到 '@' 於索引位置:$position"; // 輸出:6
// 結合 substr() 截取域名
$domain = substr($email, $position + 1);
echo "域名為:$domain"; // 輸出:example.com
} else {
echo "未找到 '@' 符號";
}
?>
strstr() 預設區分大小寫。若需不區分大小寫搜尋,請使用 stristr()。!== false 判斷,因為子字串若位於索引 0 處,返回值為 0,若用 if ($result) 會被誤判為失敗。strpos() 比 strstr() 更快,因為它不複製字串內容。掌握 strstr() 與 strpos() 的差異,能讓你在字串處理上更靈活高效。根據需求選擇合適的函數,是寫出優雅 PHP 代碼的關鍵。