php 正則替換一些例子小結

來源:互聯網
上載者:User

PHPRegex替換的相關概念:

preg_replace:執行Regex的搜尋和替換

mixed preg_replace (   mixed pattern,   mixed replacement,   mixed subject [, int limit]) preg_replace:允許你替換字串中匹配到你定義的Regex。


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

 代碼如下 複製代碼

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


這段代碼可以移除在 PHP 和 CSS 中使用 /* 注釋 */ 格式的多多行注釋。其中的三個參數分別為Regex,要替換成的字串和要替換的目標字串(這裡要做移除功能,所以是個空白字串 -> '')。如果你想匹配次級規則,可以使用 $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 只是單純的文字。


例子1:

 代碼如下 複製代碼

$jobname="行政辦—RH021001前台秘書(職位編號:RH021001)";
$jobname=preg_replace("/(.*)/","",$jobname);
$jobname=preg_replace("/.*—.*01/","",$jobname);
//輸出:前台秘書

例子2:

 代碼如下 複製代碼

$str="<a href="space.php?uid=109">fsb</a>";s<a href="space.php?uid=109&do=thread&id=174">注意調節心態 預防職場心理疲勞</a>";
 
$str=preg_replace("/space.php?uid=(d+)&do=thread&id=(d+)/","/space-0-do-thread-id-${2}.html",$str);
$str=preg_replace("/space.php?uid=(d+)/","/space-${1}.html",$str);
 
//輸出:<a href="space.php?uid=109">fsb</a>";s<a href="/space-0-do-thread-id-174.html">注意調節心態 預防職場心理疲勞</a>


例子3: 正則提取或替換img標記屬性

 

 代碼如下 複製代碼

<?php

/*PHP正則提取圖片img標記中的任意屬性*/
$str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正則提取或更改圖片img標記中的任意屬性</center>';

//1、取整個圖片代碼
preg_match('/<s*imgs+[^>]*?srcs*=s*('|")(.*?)\1[^>]*?/?s*>/i',$str,$match);
echo $match[0];

//2、取width
preg_match('/<img.+(width="?d*"?).+>/i',$str,$match);
echo $match[1];

//3、取height
preg_match('/<img.+(height="?d*"?).+>/i',$str,$match);
echo $match[1];

//4、取src
preg_match('/<img.+src="?(.+.(jpg|gif|bmp|bnp|png))"?.+>/i',$str,$match);
echo $match[1];

/*PHP正則替換圖片img標記中的任意屬性*/
//1、將src="/uploads/images/20100516000.jpg"替換為src="/uploads/uc/images/20100516000.jpg")
print preg_replace('/(<img.+src="?.+)(images/)(.+.(jpg|gif|bmp|bnp|png)"?.+>)/i',"${1}uc/images/${3}",$str);
echo "<hr/>";

//2、將src="/uploads/images/20100516000.jpg"替換為src="/uploads/uc/images/20100516000.jpg",並省去寬和高
print preg_replace('/(<img).+(src="?.+)images/(.+.(jpg|gif|bmp|bnp|png)"?).+>/i',"${1} ${2}uc/images/${3}>",$str);

?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.