亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

詳解PHP正則表達式替換實現(PHP preg_replace,PHP preg_replace)

2020-03-16 21:04:44
字體:
來源:轉載
供稿:網友
PHP正則表達式替換實現是如何的呢?首先向你介紹下PHP preg_replace,PHP preg_replace的使用是我們實現的方法,那么對于PHP正則表達式替換實現過程我們從實例入手,感興趣的跟著小編一起了解了解吧
 

PHP正則表達式替換實現是如何的呢?首先向你介紹下PHP preg_replace,PHP preg_replace的使用是我們實現的方法,那么對于PHP正則表達式替換實現過程我們從實例入手。

PHP正則表達式替換的相關概念:

preg_replace:執行正則表達式的搜索和替換
 

  1. mixed preg_replace (   
  2. mixed pattern,   
  3. mixed replacement,   
  4. mixed subject [, int limit]) 
?

preg_replace:允許你替換字符串中匹配到你定義的正則表達式。

一個簡單的注釋移除功能:

preg_replace('[(/*)+.+(*/)]', '', $val);

這段代碼可以移除在 PHP 和 CSS 中使用 /* 注釋 */ 格式的多多行注釋。其中的三個參數分別為正則表達式,要替換成的字符串和要替換的目標字符串(這里要做移除功能,所以是個空白字符串 -> '')。如果你想匹配次級規則,可以使用 $0 代表全部匹配,$1、$2 等,以此類推代表分別的次級規則。

在 subject 中搜索 pattern 模式的匹配項并替換為 replacement。如果指定了 limit,則僅替換 limit 個匹配,如果省略 limit 或者其值為 -1,則所有的匹配項都會被替換。

replacement 可以包含 //n 形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首選使用后者。每個此種引用將被替換為與第 n 個被捕獲的括號內的子模式所匹配的文本。n 可以從 0 到 99,其中 //0 或 $0 指的是被整個模式所匹配的文本。對左圓括號從左到右計數(從 1 開始)以取得子模式的數目。

對替換模式在一個逆向引用后面緊接著一個數字時(即:緊接在一個匹配的模式后面的數字),不能使用熟悉的 //1 符號來表示逆向引用。舉例說 //11,將會使 preg_replace() 搞不清楚是想要一個 //1 的逆向引用后面跟著一個數字 1 還是一個 //11 的逆向引用。本例中的解決方法是使用 /${1}1。這會形成一個隔離的 $1 逆向引用,而使另一個 1 只是單純的文字。

PHP正則表達式替換的相關實例:

例子 1. 逆向引用后面緊接著數字的用法
 

  1. <?php  
  2. $string = "April 15, 2003";  
  3. $pattern = "/(/w+) (/d+), (/d+)/i";  
  4. $replacement = "/${1}1,/$3";  
  5. print preg_replace($pattern, $replacement, $string);  
  6. /* Output  
  7.   ======  
  8. April1,2003  
  9. */ 
  10. ?> 
?

如果搜索到匹配項,則會返回被替換后的 subject,否則返回原來不變的 subject。

preg_replace() 的每個參數(除了 limit)都可以是一個數組。如果 pattern 和 replacement 都是數組,將以其鍵名在數組中出現的順序來進行處理。這不一定和索引的數字順序相同。如果使用索引來標識哪個 pattern 將被哪個 replacement 來替換,應該在調用 preg_replace() 之前用 ksort() 對數組進行排序。

例子 2. 在 preg_replace() 中使用索引數組
 

  1. <?php  
  2. $string =   
  3. "The quick brown fox jumped over the lazy dog.";  
  4. $patterns[0] = "/quick/";  
  5. $patterns[1] = "/brown/";  
  6. $patterns[2] = "/fox/";  
  7. $replacements[2] = "bear";  
  8. $replacements[1] = "black";  
  9. $replacements[0] = "slow";  
  10. print preg_replace($patterns, $replacements, $string);  
  11. /* Output  
  12.   ======  
  13. The bear black slow jumped over the lazy dog.  
  14. */ 
  15. /* By ksorting patterns and replacements,  
  16.   we should get what we wanted. */ 
  17. ksort($patterns);  
  18. ksort($replacements);  
  19. print preg_replace($patterns, $replacements, $string);  
  20. /* Output  
  21.   ======  
  22. The slow black bear jumped over the lazy dog.  
  23. */ 
  24. ?>   
?

如果 subject 是個數組,則會對 subject 中的每個項目執行搜索和替換,并返回一個數組。

如果 pattern 和 replacement 都是數組,則 preg_replace() 會依次從中分別取出值來對 subject 進行搜索和替換。如果 replacement 中的值比 pattern 中的少,則用空字符串作為余下的替換值。如果 pattern 是數組而 replacement 是字符串,則對 pattern 中的每個值都用此字符串作為替換值。反過來則沒有意義了。

/e 修正符使 preg_replace() 將 replacement 參數當作 PHP 代碼(在適當的逆向引用替換完之后)。提示:要確保 replacement 構成一個合法的 PHP 代碼字符串,否則 PHP 會在報告在包含 preg_replace() 的行中出現語法解析錯誤。

例子 3. 替換數個值
 

  1. <?php  
  2. $patterns = array 
  3. ("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/",  
  4.           "/^/s*{(/w+)}/s*=/");  
  5. $replace = array 
  6. ("//3///4///1//2""$//1 =");  
  7. print preg_replace   
  8. ($patterns, $replace, "{startDate} = 1999-5-27");  
  9. ?> 
?

本例將輸出:

$startDate = 5/27/1999

例子 4. 使用 /e 修正符
 

  1. <?php  
  2. preg_replace   
  3. ("/(<//?)(/w+)([^>]*>)/e",  
  4. "'//1'.strtoupper('//2').'//3'",  
  5. $html_body);  
  6. ?> 
?

這將使輸入字符串中的所有 HTML 標記變成大寫,以上的實例運行支持版本為PHP 3>= 3.0.9, PHP 4。

PHP正則表達式替換的相關內容就向你介紹到這里,希望那個對你了解和掌握PHP正則表達式替換有所幫助。

用正則表達式替換內容 php

以前做一個項目,就是有一個問答的頁面,比如說在回答或者提問的內容中插入表情。寫到內容里的是表情圖片的名字(而且是不帶后綴的,比如:f_002.png)表情包放在項目里,我需要在取除內容的時候將里面的表情名字替換成圖片。

存到數據庫中的內容是這樣的:   不知道[f_013]    (最后面的這個[f_013]就是表情圖在數據庫中存放的形式)

我需要做的就是從數據庫中取出內容,并且把內容中的像這樣的字符 [f_013] 處理成圖片地址,很顯然這里需要用到正則表達式。

1.首先我得先找到這個字符串

$rule = "/(?:/[)(f_.[0-9]{1,3})(?:/])/i";

這個正則匹配可以幫我找到表情的字符串

2.找到后就是把這個字符串換成表情圖片存放的地址,這里用到了一個函數就是正則表達式的替換。

就是這個函數:preg_match_all

echo preg_replace("/(?:/[)(f_.[0-9]{1,3})(?:/])/i","<img src='__PUBLIC__/face//${1}.png'>",$line['content']);
$line['content']   這個是我從數據庫中取出的內容,

"<img src='__PUBLIC__/face//${1}.png'>"  這個是我將要替換的圖片地址,比如我的圖片地址是這樣的<img src="__PUBLIC__/face/f_013.png">

這里面有一個非常重要的知識點: "/${1}"   它就是那個存放在數據庫里面表情的字符串。

/${1} = f_013

我這里有我替換的一個完整代碼:
 

  1. <?php 
  2. $result = array(); 
  3.    $n = preg_match_all("/(?:/[)(f_.[0-9]{1,3})(?:/])/i",$line['content'], $result); /*返回查找到符合條件的字符串的個數*/ 
  4.    if($n == 0 || $n == false)  /*如果是0或者false就說明沒有表情*/ 
  5.    { 
  6.     echo $line['content']; 
  7.    }else 
  8.    { 
  9.      echo preg_replace("/(?:/[)(f_.[0-9]{1,3})(?:/])/i","<img src='__PUBLIC__/face//${1}.png'>",$line['content']); 
  10.    } 
  11.    ?> 
?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av网站电影| 日韩精品视频在线| 精品久久香蕉国产线看观看gif| 欧美xxxx综合视频| 夜夜嗨av一区二区三区免费区| 亚洲国产精品推荐| 亚洲女人被黑人巨大进入| 欧美激情精品久久久久久久变态| 亚洲久久久久久久久久| 亚洲国内精品视频| 精品亚洲男同gayvideo网站| 国产91精品久久久久| 国产欧美日韩精品在线观看| 亚洲日韩欧美视频| 亚洲第一偷拍网| 国产福利视频一区| 国产成+人+综合+亚洲欧洲| 97在线精品视频| 国产美女直播视频一区| 国产不卡视频在线| 欧美成人久久久| 国产综合久久久久久| 亚洲精品国偷自产在线99热| 国产精品成人免费电影| 国产精品青青在线观看爽香蕉| 青草青草久热精品视频在线观看| 热久久美女精品天天吊色| 国产精品爽黄69| 国产欧美va欧美va香蕉在线| 欧美日韩第一页| 国产亚洲视频在线| 国产精品青青在线观看爽香蕉| 亚洲精品电影网站| 国内揄拍国内精品| www.久久撸.com| 精品女同一区二区三区在线播放| 欧美成人午夜激情| 日韩在线视频网站| 91免费人成网站在线观看18| 国产一区二区av| 91在线视频导航| 91精品国产91久久久久久吃药| 国产一区二区三区在线观看视频| 一区二区亚洲精品国产| 亚洲综合最新在线| 日韩三级成人av网| 久久久亚洲欧洲日产国码aⅴ| 久久男人资源视频| 国产精品最新在线观看| 日韩欧美中文第一页| 欧美中文在线观看| 国产精品偷伦一区二区| 日韩欧美精品中文字幕| 不卡伊人av在线播放| 亚洲午夜精品久久久久久久久久久久| 成人免费网视频| 97视频免费在线看| 久久久久久久香蕉网| 992tv在线成人免费观看| 亚洲精品国精品久久99热一| 成人国产在线视频| 自拍偷拍亚洲精品| 久久99热精品这里久久精品| 精品亚洲精品福利线在观看| 亚洲精品久久久久| 欧美性猛交丰臀xxxxx网站| 成人信息集中地欧美| 亚洲精品二三区| 国产成人在线一区二区| 日韩免费在线看| 成人黄色av免费在线观看| 伊人一区二区三区久久精品| 成人免费激情视频| 欧美性高潮床叫视频| 日韩av在线不卡| 精品视频在线播放色网色视频| 国产一区二区三区视频免费| 国产精品成人av在线| 成人免费淫片aa视频免费| 国产成人精品av在线| 国内精久久久久久久久久人| 亚洲最大在线视频| 久久九九国产精品怡红院| 国产精品日韩久久久久| 国产欧美一区二区三区视频| 亚洲国产精品999| 欧美精品激情在线观看| 北条麻妃在线一区二区| 97香蕉超级碰碰久久免费软件| 久久久久久久久国产| 国产精品夜间视频香蕉| 久久九九国产精品怡红院| 国产国语videosex另类| 久热国产精品视频| 夜夜狂射影院欧美极品| 国产美女精品视频免费观看| 美女999久久久精品视频| 国产精品ⅴa在线观看h| 国产精品永久免费| 欧美性开放视频| 久热精品视频在线| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩国产影院| 国产欧美欧洲在线观看| 欧美日韩国产限制| 成人免费视频97| 色妞在线综合亚洲欧美| 亚洲美女中文字幕| 欧美做受高潮电影o| 亚洲一区二区在线| 久久精品中文字幕电影| 91国偷自产一区二区三区的观看方式| 一本大道久久加勒比香蕉| 亚洲激情国产精品| 欧美性猛交xxxx免费看久久久| 久久精品色欧美aⅴ一区二区| 国产丝袜精品视频| 国产成人精品a视频一区www| 欧美性视频精品| 国产精品香蕉在线观看| 亚洲欧美日韩一区二区在线| 亚洲天堂男人天堂| 热99精品只有里视频精品| 国产精品久久久久aaaa九色| 欧美性资源免费| 在线观看免费高清视频97| 91香蕉嫩草影院入口| 91经典在线视频| 亚洲综合最新在线| 国产一区二区丝袜高跟鞋图片| 庆余年2免费日韩剧观看大牛| 国产精品色午夜在线观看| 菠萝蜜影院一区二区免费| 亚洲精品456在线播放狼人| 精品露脸国产偷人在视频| 在线观看欧美日韩| 国产视频福利一区| 亚洲视频自拍偷拍| 日韩一级裸体免费视频| 九九热这里只有精品6| 人人做人人澡人人爽欧美| 91中文精品字幕在线视频| 欧美成人自拍视频| 欧美在线欧美在线| 在线亚洲欧美视频| 亚洲3p在线观看| 欧美视频中文在线看| 亚洲人精选亚洲人成在线| 91精品国产99久久久久久| 亚洲国产精品一区二区久| 98精品在线视频| 日本精品视频网站| 久久成人精品电影| 亚洲国产精品热久久| 国产精品嫩草影院一区二区| 国产精品久久国产精品99gif| 亚洲精品一区久久久久久| 日韩免费在线视频| 久久久久久这里只有精品| 欧美日韩福利视频| 成人黄色大片在线免费观看| 久久免费视频这里只有精品| 欧美精品18videos性欧| 国产精品久久久久久久美男|