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