一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 正則表達式 - 詳解PHP正則表達式替換實現(PHP preg_replace,PHP preg_replace)

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

2020-08-15 19:41正則之家 正則表達式

PHP正則表達式替換實現是如何的呢?首先向你介紹下PHP preg_replace,PHP preg_replace的使用是我們實現的方法,那么對于PHP正則表達式替換實現過程我們從實例入手,感興趣的跟著小編一起了解了解吧

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

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

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

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

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

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

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

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

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

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

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

例子 3. 替換數個值

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

本例將輸出:

$startDate = 5/27/1999

例子 4. 使用 /e 修正符

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

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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: zol中关村在线官网 yy6080欧美三级理论 | 男女男在线精品网站免费观看 | 精品91自产拍在线 | 四虎永久在线精品国产馆v视影院 | 日韩国产欧美视频 | 美国女艳星brandilove | 97热在线| 狠狠色综合久久久久尤物 | 久久视频这里只精品99热在线观看 | 国产激情久久久久影院小草 | 末发育xxxxx仙踪林 | 日韩欧美国产免费看清风阁 | 天天综合色天天综合色sb | ai换脸明星专区在线观看 | 国产yw193.㎝m在线观看 | 亚洲99久久无色码中文字幕 | 日韩欧美中文字幕一区 | 国产日韩精品一区二区在线观看播放 | 亚洲欧美日韩综合一区久久 | 久久久久久久久女黄9999 | 国产欧美亚洲精品第一页青草 | 人人揉人人爽五月天视频 | 亚洲haose在线观看 | 免费国产好深啊好涨好硬视频 | 色中色软件 | 久久婷婷丁香五月色综合啪免费 | 日韩视频在线精品视频免费观看 | 国产精品久久久久久五月尺 | 欧美艳星julnaann | 日韩精品成人在线 | 亚洲一区 在线播放 | 国产精品资源在线观看网站 | 俄罗斯图书馆无打码久久 | 操双性人 | 亚欧国产 | 国内精品一区二区三区东京 | 男人天堂网在线 | 欧美日韩国产亚洲一区二区三区 | 91精品国产亚洲爽啪在线影院 | 99久久精品免费看国产一区 | 校园春色偷拍自拍 |