在之前的文章中我們介紹了區分大小寫的獲取子串在字符串中第一次或最后一次的出現位置,進而判斷檢測子串是不是存在的方法,有需要的請看《PHP字符串學習之檢測子串是不是存在(大小寫敏感)》。這次我們來帶大家了解一下字符串替換,介紹一下使用PHP將某長度的子串換成*號的方法。
PHP中提供了多個可以進行字符串替換的函數,但它們進行替換的方式是不一樣的。有些是直接給出需要替換的子串,有些就是給出替換開始的位置,和替換長度。今天我們就來了解后一種方法。
我們來看看下面一個例子:
<?php $str = 'hello,world,hello,world'; $replace = '*'; echo substr_replace($str, $replace, 0,5)."<br>"; echo substr_replace($str, $replace, 6,5)."<br>"; ?>
看這個代碼,你們覺得會輸出什么?是不是應該輸出“*,world,hello,world
”和“hello,*,hello,world
”,那對不對呢,我們來看看輸出結果:
是的,沒錯。在上例中,substr_replace()函數分別將字符串$str
從第一個字符開始,有5個字符長度的子串“hello
”和從第7個字符開始,有5個字符長度的子串“world
”替換成了*
號。
好了,指定了如何將某長度的子串換成*號,下面我們來了解一下實現這個功能的函數substr_replace()。
substr_replace($string,$replacement,$start,$length)
函數接受了三個必需參數$string
、$replacement
(替換值)和$start
(替換開始的位置),一個可省略的參數$length
(要替換的字符數目)。
substr_replace()函數可以在字符串 $string
的副本中將由 $start
和 $length
參數限定的子字符串使用 $replacement
進行替換。
簡單來說,就是使用$replacement
值從$start
位置開始(注,字符串位置起始于 0),替換$length
數目的字符。
$start
有三種取值情況:
-
為正數,替換將從 $string 的 $start 位置開始。
-
為0 ,替換將從 $string 的第一個字符處開始
-
為負數,替換將從 $string 的倒數第 $start 個位置開始。
$length
參數有四種取值情況:
-
為正數,就表示被替換的子字符串的長度。
-
為負數,就表示待替換的子字符串結尾處距離 $string 末端的字符個數。
-
為 0,那么substr_replace()函數就有了插入功能,會將
$replacement
插入$start
位置處。 -
如果省略此參數,那么默認為 strlen(string)(字符串的長度),即替換從 $start 位置開始的整個子字符串。
<?php $str = 'hello,world,hello,world'; $replace = '*'; echo substr_replace($str, $replace, 0,-5)."<br>"; echo substr_replace($str, $replace, -5,5)."<br>"; echo substr_replace($str, $replace, 6)."<br>"; ?>
輸出結果:
好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程
最后給大家推薦閱讀一個經典課程《PHP字符串處理(玉女心經版)》,免費的~快來學習啊!