PHP 查詢 擷取字串函式詳解

2021-09-12 23:04:00 字數 2646 閱讀 5044

經常需要對字串進行查詢、擷取的處理,會用到 strstr,strrchr,strpos,strrpos,substr 等函式,在這裡整理記錄下。

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

返回 haystack 字串從 needle 第一次出現的位置開始到 haystack 結尾的字串。

strstr 會查詢字元首次出現的位置,並返回其中的一部分,未找到返回 false。示例

<?php

$str = 'abcdefabcdef';

echo strstr($str, 'c') . php_eol;// cdefabcdef,返回第一次出現位置後面的字串,包括c

echo strstr($str, 'c', true);// ab,返回第一次出現位置後面的字串,不包括c

string strrchr ( string $haystack , mixed $needle )

該函式返回 haystack 字串中的一部分,這部分以 needle 的最後出現位置開始,直到 haystack 末尾。

strrchr 會查詢字元最後一次出現的位置,並返回到末尾的部分,未找到返回 false。示例

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 ] )

返回字串 haystack 中 needle 最後一次出現的數字位置。

strrpos 會查詢字元最後一次出現的位置,返回所在位置的數字,未找到返回 false。示例

<?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 ] )

返回字串 string 由 start 和 length 引數指定的子字串。

substr 根據位置引數,返回擷取的字串,失敗時返回 false。示例

<?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...