經常需要對字串進行查詢、擷取的處理,會用到 strstr,strrchr,strpos,strrpos,substr 等函式,在這裡整理記錄下。
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )strstr 會查詢字元首次出現的位置,並返回其中的一部分,未找到返回 false。示例返回 haystack 字串從 needle 第一次出現的位置開始到 haystack 結尾的字串。
<?php
$str = 'abcdefabcdef';
echo strstr($str, 'c') . php_eol;// cdefabcdef,返回第一次出現位置後面的字串,包括c
echo strstr($str, 'c', true);// ab,返回第一次出現位置後面的字串,不包括c
string strrchr ( string $haystack , mixed $needle )strrchr 會查詢字元最後一次出現的位置,並返回到末尾的部分,未找到返回 false。示例該函式返回 haystack 字串中的一部分,這部分以 needle 的最後出現位置開始,直到 haystack 末尾。
strpos 會查詢字元首次出現的位置,返回所在位置的數字,未找到返回 false。示例
<?php
$str = 'abcdefabcdef';
echo strpos($str, 'e') . php_eol;// 4,字串位置是從0開始
echo strpos($str, 'e',3) . php_eol;// 4,從第3位開始查詢
echo strpos($str, 'e',11);// false,從第11位開始查詢
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )strrpos 會查詢字元最後一次出現的位置,返回所在位置的數字,未找到返回 false。示例返回字串 haystack 中 needle 最後一次出現的數字位置。
<?php
$str = 'abcdefabcdef';
echo strrpos($str, 'e') . php_eol;// 10,字串位置是從0開始
echo strrpos($str, 'e', 4) . php_eol;// 10,從第4位開始查詢
echo strrpos($str, 'e', 11) . php_eol;// false,從第11位開始查詢
echo strrpos($str, 'e',-5);// 4,從尾部第5位開始查詢
string substr ( string $string , int $start [, int $length ] )substr 根據位置引數,返回擷取的字串,失敗時返回 false。示例返回字串 string 由 start 和 length 引數指定的子字串。
<?php
$str = 'abcdefabcdef';
echo substr($str, 0, 5) . php_eol;// abcde,從首部開始擷取5位
echo substr($str, 0, -3) . php_eol;// abcdefabc,從首部開始擷取-3位
echo substr($str, -2) . php_eol;// ef,從尾部開始擷取2位
echo substr($str, -5, 3) . php_eol;// bcd,從尾部第5位開始擷取3位
echo substr($str, -5, -1) . php_eol;// bcde,從尾部第5位開始擷取-1位
以上是函式的簡單示例,工作中合理使用會讓我們事半功倍。下面是獲取郵箱使用者名稱或者郵箱網域名稱的例項
<?php
$email = '[email protected]';
// 獲取使用者名稱
echo strstr($email, '@', true) . php_eol;
echo substr($email, 0, strpos($email, '@')) . php_eol;
echo substr($email, 0, strrpos($email, '@')) . php_eol;// 郵箱中只有乙個@,所有 strpos 和 strrpos 相同
// 獲取郵箱網域名稱
echo substr(strstr($email, '@'), 1) . php_eol;
echo substr(strrchr($email, '@'), 1) . php_eol;
echo substr($email, strpos($email, '@') + 1) . php_eol;
echo substr($email, strrpos($email, '@') + 1);// 同上
參考資料:strstr、strrchr、strpos、strrpos、mbstring php擷取字串函式
str 123456789 echo substr str 0 3 從左邊第一位字元起擷取3位字元 結果 123 echo substr str 3 3 從左邊第3位字元起擷取3位字元 結果 456 html view plain copy rest substr abcdef 1 返回 f res...
PHP查詢並擷取字串函式strchr
strchr 函式搜尋乙個字串在另乙個字串中的第一次出現。該函式返回字串的其餘部分 從匹配點 如果未找到所搜尋的字串,則返回 false。strchr string,search 引數 描述string 必需。規定被搜尋的字串。search 必需。規定所搜尋的字串。如果該引數是數字,則搜尋匹配數字 ...
PHP擷取字串
php 自帶幾種字串擷取函式,其中常用到的就是 substr 和 mb substr。前者在處理中文時,gbk 為 2 個長度單位,utf 為 3 個長度單位,後者指定編碼後,乙個中文即為 1 個長度單位。substr 不用說,有時會截 1 3 個中文或半個中文,當然顯示出來是亂碼了,相對來說 mb...