eregi_replace與preg_replace 函數代碼的用法比較
來源:互聯網
上載者:User
eregi_replace ( string pattern, string replacement, string string )
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )
以上兩個函數基本義定義我知道
但是裡面樣式或參數的定義我搞不懂
例如以下是UBB與YBB Code的用法
$str = eregi_replace("\\[url]http://([^\\[]*)\\[/url\\]","<a href=\"http://\\1\" target=\"_blank\">\\1</a>",$str);
$text = preg_replace("!(\[url=)(http|https|ftp)(://\S+?)(\])(.+?)(\[/url\])!i", "<a href='\\2\\3' target='_blank'>\\5</a>", $text);
有誰能說明解決裡面那些符號代表何意義?
我相信很多人也只會照抄來用
但是搞不懂意思,搞不懂意思的話,就不可能自己寫程式,
發揮這函數的功能了
preg_replace() 函數使用了 Perl 相容Regex文法,通常是比 ereg_replace() 更快的替代方案。
形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首選使用後者。每個此種引用將被替換為與第 n 個被捕獲的括弧內的子模式所匹配的文本
n 可以從 0 到 99,其中 \\0 或 $0 指的是被整個模式所匹配的文本。對左圓括弧從左至右計數(從 1 開始)以取得子模式的數目
例子 1. 逆向引用後面緊接著數位用法
複製代碼 代碼如下:<?php
$string = "April 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
print preg_replace($pattern, $replacement, $string);
/* Output
======
preg_replace() 搞不清楚是想要一個 \\1 的逆向引用後面跟著一個數字 1 還是一個 \\11 的逆向引用。本例中的解決方案是使用 \${1}1
April1,2003
*/
?>