程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php preg_replace替換函數的用法

php preg_replace替換函數的用法

編輯:PHP綜合

解釋:字符串比對解析並取代。

語法: mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

返回值: 混合類型資料

函數種類: 資料處理

內容說明: 本函數以 pattern 的規則來解析比對字符串 subject,欲取而代之的字符串為參數 replacement。返回值為混合類型資料,為取代後的字符串結果。

<?PHP
//preg_replace()和ereg_replace()函數的使用的比較
// -------preg_replace()--------------------------
//1.進行字符串的查找的替換
$str = "daoyu shi ge hao hai zi 5555";
$pattern = "/\s/"; //如果將變量定義為$pattern_1會出錯
$str = preg_replace($pattern,'-',$str);
echo $str."<br>";

//2.對字符串的逆向引用
//方法一
$pat = "/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\d+)/i";
$str =preg_replace($pat,"\$1",$str);
echo $str."<br>";

//注意:如果是下面這種形式你會發現匹配的是:zi- 所以可以這樣認為在有次數的{6}的情況下,他($1)匹配的是最後一次
$pat = "/((\w+)-){6}(\d+)/i";
$str =preg_replace($pat,"\$1",$str);
echo $str."<br>";


//方法二
$str = "daoyu-shi-ge-hao-hai-zi-5555";
$pat = "/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\d+)/i";
$str =preg_replace($pat,"\\1",$str);
echo $str."<br>";

//注意:當正則寫成$pat= "/((\w+)-){6}(\d+)/i";時和上面的情況一樣
//3 當參數是數組的情況(用下手冊的例子)
$string = "The quick brown fox jumped over the lazy dog.";

$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";

$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";

print preg_replace($patterns, $replacements, $string)."<br>";

//或許你已經發現了,他是按“將以其鍵名在數組中出現的順序來進行處理。這不一定和索引的數字順序相同”按我的理解就是在按“寫”的順序而這並不一定是//索引的順序(書冊上還有還有ksort()後的例子,時間關系就不說了,有興趣的兄弟可以自己找著看下)

//好preg_replace()就扯到著,開是扯下一個ereg_replace()
//---------------------ereg_replace()------------------

//1.進行字符串的查找的替換
$str = "daoyu shi ge hao hai zi 5555";
$pattern = "[a-zA-Z]+"; //如果寫成$pattern= "/[a-zA-Z]+/"; 將不做任何替換也就是說這裡不能用正則“/”(可能就是著兩個函數的第一個區別 :))
$str = ereg_replace($pattern,'~',$str);
echo $str."<br>";

//2.對字符串的逆向引用
//在用下書冊上的例子
$string = "This is a test";
//echo ereg_replace("( )is", "\\1was", $string); //“\\1”匹配”(空格)is“ 這部分的空格,換句話說就是”替換為數字表示的的第幾個括號內//的子串“

echo ereg_replace("(( )is)", "\\2was", $string)."<br>";

//對上面的使用還有疑惑的兄弟可參考寫這篇文章http://elma.9IEc.com/index.PHP?job=art&articleid=a_20051104_175700
$string = "The quick brown fox jumped over the lazy dog.";

$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";

$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";

print ereg_replace($patterns, $replacements, $string)."<br>";
//總結
//1 preg_replace()裡面的正則可以寫成型如:"/..../"而ereg_replace()裡面的正則需寫成型如".....";
//2 preg_replace()能操作數組,而ereg_replace()不可以
//3在逆向引用用preg_replace()可使用0-99個,而ereg_replace()最多為9個

//在使用過程中感覺兩者的區別不是很大,在功能上也比較相似..

?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved