主頁(yè) > 知識(shí)庫(kù) > eregi_replace與preg_replace 函數(shù)代碼的用法比較

eregi_replace與preg_replace 函數(shù)代碼的用法比較

熱門(mén)標(biāo)簽:服務(wù)器配置 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù) 電子圍欄 Linux服務(wù)器 阿里云 Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng)
eregi_replace ( string pattern, string replacement, string string )
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int count]] )
以上兩個(gè)函數(shù)基本義定義我知道
但是里面樣式或參數(shù)的定義我搞不懂
例如以下是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);
有誰(shuí)能說(shuō)明解決里面那些符號(hào)代表何意義?
我相信很多人也只會(huì)照抄來(lái)用
但是搞不懂意思,搞不懂意思的話,就不可能自己寫(xiě)程式,
發(fā)揮這函數(shù)的功能了
preg_replace() 函數(shù)使用了 Perl 兼容正則表達(dá)式語(yǔ)法,通常是比 ereg_replace() 更快的替代方案。
形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首選使用后者。每個(gè)此種引用將被替換為與第 n 個(gè)被捕獲的括號(hào)內(nèi)的子模式所匹配的文本
n 可以從 0 到 99,其中 \\0 或 $0 指的是被整個(gè)模式所匹配的文本。對(duì)左圓括號(hào)從左到右計(jì)數(shù)(從 1 開(kāi)始)以取得子模式的數(shù)目
例子 1. 逆向引用后面緊接著數(shù)字的用法
復(fù)制代碼 代碼如下:

?php 
$string = "April 15, 2003"; 
$pattern = "/(\w+) (\d+), (\d+)/i"; 
$replacement = "\${1}1,\$3"; 
print preg_replace($pattern, $replacement, $string); 
/* Output 
====== 
preg_replace() 搞不清楚是想要一個(gè) \\1 的逆向引用后面跟著一個(gè)數(shù)字 1 還是一個(gè) \\11 的逆向引用。本例中的解決方法是使用 \${1}1 
April1,2003 
*/ 
?> 
您可能感興趣的文章:
  • eregi_replace()中特殊字符的處理方法
  • POSIX 風(fēng)格和兼容 Perl 風(fēng)格兩種正則表達(dá)式主要函數(shù)的類(lèi)比(preg_match, preg_replace, ereg, ereg_replace)
  • php中正則替換函數(shù)ereg_replace用法實(shí)例
  • php 升級(jí)到 5.3+ 后出現(xiàn)的一些錯(cuò)誤,如 ereg(); ereg_replace(); 函數(shù)報(bào)錯(cuò)

標(biāo)簽:蚌埠 衢州 大理 江蘇 廣元 棗莊 萍鄉(xiāng) 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《eregi_replace與preg_replace 函數(shù)代碼的用法比較》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266