使用正則去除php代碼中的注釋方法
測(cè)試代碼
文件:a.PHP
<?php /** * 加法計(jì)算 * 測(cè)試 */ // 設(shè)定$a的值 $a = 10; // 設(shè)定$b的值 $b = 5; // 加法 $c = $a + $b; # 輸出結(jié)果 echo $c;
文件:test.php
echo "源碼:<br />"; show_source('./a.php'); echo "<hr />去除注釋后:<br />"; highlight_string(removeComment(file_get_contents('./a.php'))); /** * 去除PHP代碼注釋 * @param string $content 代碼內(nèi)容 * @return string 去除注釋之后的內(nèi)容 */ function removeComment($content){ return preg_replace("/(\/\*.*\*\/)|(#.*?\n)|(\/\/.*?\n)/s", '', str_replace(array("\r\n", "\r"), "\n", $content)); }
測(cè)試輸出
執(zhí)行test.php,輸出如下:
正則分析
(\/\*.*\*\/) 匹配 /* */ (#.*?\n) 匹配 # 遇到第一個(gè)回車后結(jié)束 (\/\/.*?\n) 匹配 // 遇到第一個(gè)回車后結(jié)束
腳本之家小編繼續(xù)補(bǔ)充一下:
多行注釋
<?php $s = '/*aaaa sss */*/'; preg_match('@/\*.*?\*/@s', $s, $match); var_dump($match);
運(yùn)行結(jié)果
array(1) { [0]=> string(15) "/*aaaa sss */" }
匹配單行注釋
<?php $str = " a = b; //asdf //saf b = c; //asdf "; $reg = '@\s*//.*$@m'; $res = preg_replace($reg,'',$str); echo $res;
輸出
a = b; b = c;
再來一個(gè)lua版的
local test = "int x; /* xx */ xx*/ int y; /* y */" function string.gfind(test, patten) local i,j = 0,0; return function() i,j = string.find(test, patten, j+1) if(i == nil) then -- end find return nil end return string.sub(test, i, j) end end for v in string.gfind(test, "/%*.-%*/") do print(v) end
輸出
/* xx */
/* y */
phpstorm 正則匹配刪除注釋行(替換注釋行為空行)
使用phpstorm 來編寫php 和javascript 代碼,感覺還是不錯(cuò)的,用得也很舒服。
遇到了一個(gè)需求,有時(shí)候在閱讀框架源代碼的時(shí)候 , 想過濾(刪除)掉源代碼中的注釋行,如果手動(dòng)逐行刪除顯示不夠科學(xué)。
當(dāng)然想到了強(qiáng)大的正則匹配(regExp regular expression), 通過寫一個(gè)正則表達(dá)式,來查找出所有的注釋行,并將其替換成空,即實(shí)現(xiàn)了需求。
1. ctrl + F , 輸入正則表達(dá)式:(\/\/.*$)|(\/\*(.|\s)*?\*\/)
2. ctrl + R, 不輸入:
3. 點(diǎn)擊后面的 Replace all
但發(fā)現(xiàn),這樣并沒有完全實(shí)現(xiàn)我們的需求,只是將注釋行替換成了空行。
所以,下面我們?cè)賹懸粋€(gè)正則表達(dá)式, 將空行匹配出來,刪掉。
1.ctrl + F, 輸入正則表達(dá)式: ^\n
2.ctrl + R, 不輸入
3.點(diǎn)擊后面的 Replace all
但發(fā)現(xiàn),還是并沒有全部刪掉空行。(還有一些空行沒刪掉)
所以,我們繼續(xù)來一個(gè)正則匹配刪除。
1.ctrl + F, 輸入正則表達(dá)式: \s\n
2.ctrl + R, 不輸入
3.點(diǎn)擊后面的 Replace all
好的,到這里,所有的空行全部刪除。 開心一下 -:)
其實(shí),這三步應(yīng)該可以合成一步實(shí)現(xiàn)的,大家可以想一想!
以上就是小編為大家?guī)淼氖褂谜齽t去除php代碼中的注釋方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
ThinkPHP3.1.2 使用cli命令行模式運(yùn)行的方法
這篇文章主要介紹了ThinkPHP3.1.2 使用cli命令行模式運(yùn)行的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04PHP實(shí)現(xiàn)把MySQL數(shù)據(jù)庫導(dǎo)出為.sql文件實(shí)例(仿PHPMyadmin導(dǎo)出功能)
這篇文章主要介紹了PHP實(shí)現(xiàn)把MySQL數(shù)據(jù)庫導(dǎo)出為.sql文件實(shí)例(仿PHPMyadmin導(dǎo)出功能),需要的朋友可以參考下2014-05-05Yii 2.0自帶的驗(yàn)證碼使用經(jīng)驗(yàn)分享
這篇文章主要給大家介紹了關(guān)于使用Yii 2.0自帶驗(yàn)證碼的一些經(jīng)驗(yàn),方便新手們快速上手,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06PHP錯(cuò)誤處理函數(shù)register_shutdown_function使用示例
這篇文章主要介紹了PHP錯(cuò)誤處理函數(shù)register_shutdown_function使用示例,需要的朋友可以參考下2017-07-07YiiFramework入門知識(shí)點(diǎn)總結(jié)(圖文教程)
這篇文章主要介紹了YiiFramework入門知識(shí)點(diǎn),結(jié)合圖文形式總結(jié)分析了YiiFramework創(chuàng)建的具體步驟及使用的相關(guān)注意事項(xiàng),需要的朋友可以參考下2015-12-12PHP程序員簡(jiǎn)單的開展服務(wù)治理架構(gòu)操作詳解(三)
這篇文章主要介紹了PHP程序員簡(jiǎn)單的開展服務(wù)治理架構(gòu)操作,總結(jié)分析了PHP開展服務(wù)治理架構(gòu)SOA服務(wù)相關(guān)概念、原理與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05PHP+MYSQL實(shí)現(xiàn)讀寫分離簡(jiǎn)單實(shí)戰(zhàn)
本篇文章主要介紹了PHP+MYSQL實(shí)現(xiàn)讀寫分離,實(shí)例分析了讀寫分離的技巧,從而提高數(shù)據(jù)庫的負(fù)載能力,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-03-03