在之前的文章中我們介紹了一種字符串替換方法,該方法可以區分大小寫的將給定子串替換成其他值,感興趣的可以點擊鏈接查閱→《PHP如何將給定子串換成*號(大小寫敏感)》。這次我們給大家介紹替換字符串中給定子串的另一種方法,有需要的可以參考參考。
上文中我們介紹了使用str_replace()函數替換給定子串的方法,這種方法對大小寫敏感(即區分大小寫),只要字符串中有一個字符的大小寫不符合要求,和給定子串無法完全相同,那么就不會進行替換。
但有時進行字符串替換時,不需要那么嚴格,可以忽略字符的大小寫問題。今天我們就來介紹一下對替換字符大小寫不敏感的方法。
我們來看看下面這個例子:
<?php $str = 'hello,world,Hello,World'; $replace = '*'; $search1 = 'hello'; $search2 = 'world'; echo str_ireplace($search1, $replace, $str)."<br>"; echo str_ireplace($search2, $replace, $str)."<br>"; ?>
觀察一下上面的代碼,我們需要將$str字符串“hello,world,Hello,World
”中的“hello
”和“world
”子串替換成*
號。但$str字符串中符合要求的有兩種:一種是完全匹配(大小寫一致)的子串,一種是不完全匹配(大小寫不一致)的。
但因為我們使用的是str_ireplace()函數,該函數可以忽略大小寫,因此會將字符串$str中符合要求的兩種子串“hello”和“Hello”、“world”和“World”,都替換為*號。所以輸出結果為:
是不是很簡單,下面我們來了解一下這個str_ireplace()函數。
str_ireplace($search,$replace,$string,$count)
函數可以忽略大小寫的替換字符串中的一些字符,該函數接受的參數和str_replace()函數一樣,前3個參數是必需的(不可省略),后一個參數$count
是可省略的(但設置了,可以獲取替換次數)。
參數$count
可以接受一個變量,用來對替換數進行計數;如果設置了該參數,就可以知道一共執行了幾次替換。
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $str = 'hello,world,Hello,World'; $replace = '*'; $search1 = 'hello'; $search2 = 'world'; echo str_ireplace($search1, $replace, $str, $i)."<br>"; echo "一共執行了 $i"." 次替換<br><br>"; echo str_ireplace($search2, $replace, $str, $i)."<br>"; echo "一共執行了 $i"." 次替換<br><br>"; ?>
輸出結果:
說明:
因為str_ireplace()和str_replace()函數都是直接給出需要替換的子串,所以這兩個函數都可以用來替換中文字符。
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $str = '你好,歡迎來到這里!'; $replace = '*'; $search1 = '你好'; $search2 = '歡迎'; echo str_ireplace($search1, $replace, $str)."<br>"; echo str_replace($search2, $replace, $str)."<br>"; ?>
輸出結果:
在純中文字符串是差不多的,但在中英混合的字符串,因為會區分大小寫,可以根據需求來選擇使用哪個。
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $str = '你好,歡迎來到PHP中文網!'; $replace = '這里'; $search1 = 'PHP中文網'; $search2 = 'php中文網'; echo str_ireplace($search1, $replace, $str)."<br>"; echo str_replace($search2, $replace, $str)."<br>"; ?>
輸出結果:
好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程
最后給大家推薦閱讀一個經典課程《PHP字符串處理(玉女心經版)》,免費的~快來學習啊!