首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 中使用 strstr() 判斷字串位置的完整指南

     編輯:PHP 相關知識

在 PHP 開發中,確認某個子字串是否存在於另一個字串中,並獲取其位置或後續內容,是常見的需求。strstr() 函數正是為此而生,它能搜尋字串在另一字串中首次出現的位置,並返回從該位置開始到字串結尾的部分。若未找到則返回 false。

基本語法

strstr(string $haystack, string $needle, bool $before_needle = false): string|false
  • $haystack:被搜尋的目標字串。
  • $needle:要搜尋的子字串。
  • $before_needle(可選):若設為 true,則返回 $needle 之前的部分(PHP 5.3.0+ 支援)。

實際範例

以下範例示範如何從電子郵件地址中提取域名部分:

<?php
$email = 'user@example.com';
// 尋找 '@' 符號並返回其及後續內容
$result = strstr($email, '@');
echo $result; // 輸出:@example.com
?>

進階用法:搭配 strpos() 獲取具體位置

若需要知道子字串確切的數字索引位置,建議使用 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() 更快,因為它不複製字串內容。

常見應用場景

  • 解析 URL、電子郵件、路徑等結構化字串
  • 關鍵字過濾與內容審核
  • 簡易模板引擎的標籤替換
  • 日誌分析與格式化輸出

掌握 strstr() 與 strpos() 的差異,能讓你在字串處理上更靈活高效。根據需求選擇合適的函數,是寫出優雅 PHP 代碼的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved