php正則去掉注釋的實(shí)現(xiàn)方法:首先創(chuàng)建PHP示例文件;然后通過(guò)正則表達(dá)式“reg_replace("/(/*.**/)|(#.*?n)|(//.*?n)/s", '', str_replace((…))”實(shí)現(xiàn)去除即可。
推薦:《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("rn", "r"), "n", $content));
}
測(cè)試輸出
執(zhí)行test.php,輸出如下:
正則分析
(/*.**/) 匹配 /* */
(#.*?n) 匹配 # 遇到第一個(gè)回車(chē)后結(jié)束
(//.*?n) 匹配 // 遇到第一個(gè)回車(chē)后結(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;
再來(lái)一個(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 來(lái)編寫(xiě)php 和javascript 代碼,感覺(jué)還是不錯(cuò)的,用得也很舒服。
遇到了一個(gè)需求,有時(shí)候在閱讀框架源代碼的時(shí)候 , 想過(guò)濾(刪除)掉源代碼中的注釋行,如果手動(dòng)逐行刪除顯示不夠科學(xué)。
當(dāng)然想到了強(qiáng)大的正則匹配(regExp regular expression), 通過(guò)寫(xiě)一個(gè)正則表達(dá)式,來(lái)查找出所有的注釋行,并將其替換成空,即實(shí)現(xiàn)了需求。
1. ctrl + F , 輸入正則表達(dá)式:(//.*$)|(/*(.|s)*?*/)
2. ctrl + R, 不輸入:
3. 點(diǎn)擊后面的 Replace all
但發(fā)現(xiàn),這樣并沒(méi)有完全實(shí)現(xiàn)我們的需求,只是將注釋行替換成了空行。
所以,下面我們?cè)賹?xiě)一個(gè)正則表達(dá)式, 將空行匹配出來(lái),刪掉。
1.ctrl + F, 輸入正則表達(dá)式: ^n
2.ctrl + R, 不輸入
3.點(diǎn)擊后面的 Replace all
但發(fā)現(xiàn),還是并沒(méi)有全部刪掉空行。(還有一些空行沒(méi)刪掉)
所以,我們繼續(xù)來(lái)一個(gè)正則匹配刪除。
1.ctrl + F, 輸入正則表達(dá)式: sn
2.ctrl + R, 不輸入
3.點(diǎn)擊后面的 Replace all
好的,到這里,所有的空行全部刪除。 開(kāi)心一下 -:)
其實(shí),這三步應(yīng)該可以合成一步實(shí)現(xiàn)的,大家可以想一想!