php正則替換的實現方法:1、建立一個php範例檔案;2、使用「preg_replace('[(/*)+.+(*/)]', '', $val);」方式執行正規表示式的搜尋和替換即可。
php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
本教學操作環境:windows10系統、PHP8.1版、DELL G3電腦
php正則替換怎麼實現?
PHP正規表示式替換實現是如何的呢?首先向你介紹下PHP preg_replace,PHP preg_replace的使用是我們實現的方法,那麼對於PHP正規表示式替換實現過程我們從範例入手。
PHP正規表示式替換的相關概念:
preg_replace:執行正規表示式的搜尋和替換
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. 逆向參照後面緊接著數位的用法
<?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() 中使用索引陣列
<?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. 替換數個值
<?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 修正符
<?php
preg_replace
("/(<//?)(/w+)([^>]*>)/e",
"'//1'.strtoupper('//2').'//3'",
$html_body);
?>
登入後複製
這將使輸入字串中的所有 HTML 標記變成大寫,以上的範例執行支援版本為PHP 3>= 3.0.9, PHP 4。
以前做一個專案,就是有一個問答的頁面,比如說在回答或者提問的內容中插入表情。寫到內容裡的是表情圖片的名字(而且是不帶字尾的,比如: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
登入後複製
我這裡有我替換的一個完整程式碼:
<?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']);
}
?>
登入後複製
推薦學習:《》
以上就是php正則替換怎麼實現的詳細內容,更多請關注TW511.COM其它相關文章!