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

PHP 字串搜尋函式詳細教學:stristr、stripos、strspn、convert_cyr_string

     編輯:PHP 相關知識

前言

字串搜尋與處理是 PHP 開發的基礎技能。本文詳細介紹四個實用函式:stristr(大小寫不敏感搜尋並回傳剩餘字串)、stripos(大小寫不敏感搜尋位置)、strspn(計算字串開頭符合字元清單的長度)、convert_cyr_string(西里爾字元集轉換),並附上完整程式碼範例與輸出結果。

1. stristr:搜尋並回傳剩餘字串

語法:stristr(string $haystack, string $needle) : string|false

  • 大小寫不敏感
  • 找到時回傳 $needle 在 $haystack 中第一次出現位置之後的所有字元(含 $needle 本身)
  • 找不到回傳 false
$str = "hello world";
$result = stristr($str, "w");
echo $result; // 輸出:world

2. stripos:搜尋並回傳位置索引

語法:stripos(string $haystack, string $needle, int $offset = 0) : int|false

  • 大小寫不敏感
  • 回傳 $needle 第一次出現的位置(索引從 0 開始)
  • 可指定 $offset 從何處開始搜尋
  • 找不到回傳 false
$str = "hello world";
$result = stripos($str, "w");
echo $result; // 輸出:6

$result = stripos($str, "l");
echo $result; // 輸出:2(第一個 l 的位置)

注意:需使用 === false 判斷未找到,因為位置 0 會被視為 false。

3. strspn:計算符合字元清單的長度

語法:strspn(string $string, string $charlist, int $start = 0, int $length = null) : int

  • 從 $start 開始,計算連續有多少字元屬於 $charlist 內
  • 遇到不在清單中的字元即停止
  • 可限制檢查長度 $length
$str = "hello world";
$result = strspn($str, "khlleo");
echo $result; // 輸出:5
// 解析:h e l l o 皆在 "khlleo" 中,第 6 個字元為空格不在清單,故長度 5

4. convert_cyr_string:西里爾字元集轉換

語法:convert_cyr_string(string $str, string $from, string $to) : string

  • 用於轉換西里爾字母編碼(如 koi8-r, windows-1251, iso-8859-5, x-mac-cyrillic, cp866)
  • $from、$to 為單一字元代碼:k, w, i, a, d
  • 非西里爾字元環境較少用,現代專案建議使用 mb_convert_encoding 或 iconv
$str = "hello world! ???";
echo $str . "<br/>";           // 原字串
echo convert_cyr_string($str, 'w', 'a'); // 輸出:hello world! ?.?
// 範例中將 windows-1251 (w) 轉為 x-mac-cyrillic (a),非西里爾字元可能異常

函式比較表

函式用途大小寫敏感回傳值常見場景
stristr搜尋並取得剩餘字串否字串/false關鍵字高亮、截取特定標記後內容
stripos搜尋位置索引否整數/false判斷是否包含、切割字串
strspn計算符合字元長度是(字元清單區分大小寫)整數驗證前綴格式、解析定寬欄位
convert_cyr_string西里爾編碼轉換不適用字串舊系統俄語資料遷移

進階補充:相關函式

  • strstr:大小寫敏感版 stristr
  • strpos:大小寫敏感版 stripos
  • strrpos/strripos:搜尋最後一次出現位置
  • strcspn:計算不在字元清單的長度(互補)
  • mb_strpos/mb_stristr:多位元組字串(UTF-8 中文)安全版本

最佳實踐

  • 處理中文等多位元組字串時,優先使用 mb_* 系列函式,避免位元組截斷導致錯誤。
  • 嚴格判斷 false 時使用 === 或 !==。
  • strspn 的 $charlist 區分大小寫,需注意傳入正確字元集。
  • 編碼轉換統一使用 mb_convert_encoding 或 iconv,支援更完整的字元集。

總結

掌握 stristr、stripos、strspn 的差異與適用場景,能更精準地處理字串搜尋、截取、驗證等需求。convert_cyr_string 屬於特定編碼轉換工具,現代專案較少直接使用。建議建立個人常用字串函式速查表,提升開發效率。

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