經常需要對字符串進行查找、截取的處理,會用到 strstr,strrchr,strpos,strrpos,substr 等函數,在這里整理記錄下。
strstrstring strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )strstr 會查找字符首次出現的位置,并返回其中的一部分,未找到返回 false。示例
?php$str = abcdefabcdef echo strstr($str, c ) . PHP_EOL;// cdefabcdef,返回第一次出現位置后面的字符串,包括cecho strstr($str, c , true);// ab,返回第一次出現位置后面的字符串,不包括cstrrchrstring strrchr ( string $haystack , mixed $needle )
strrchr 會查找字符最后一次出現的位置,并返回到末尾的部分,未找到返回 false。示例
php$str = abcdefabcdef echo strrchr($str, c // cdef,返回最后一次出現位置后面的字符串,包括cstrposmixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
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位開始查找strrposint strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
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位開始查找substrstring substr ( string $string , int $start [, int $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 = 123456@example.com // 獲取用戶名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);// 同上注釋
stristr、stripos、strripos 分別是 strstr、strpos、strrpos 的不區分大小寫版本
strpos,7.1.0版本開始支持負數的 offset
substr,length 為負數,那么 string 末尾處的 length 個字符將會被省略
strpos、strrpos ,判斷返回值要用 === ,因為有可能返回等同于 false 的非布爾值
strpos、strrpos ,第二個參數必須是字符串類型,如果不確定最好進行轉換
使用正則函數也可以對字符串進行查找、截取,不過相同效果的情況下,正則效率會慢些
如果只是想確認字符是否存在于字符串中,strpos 比 strstr 效率高
mbstring 可以更好的處理多字節編碼的字符串
以上就是PHP查找和截取字符串函數的詳細介紹(附示例)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答