溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php正則如何去除注釋

發(fā)布時(shí)間:2021-02-25 10:13:20 來(lái)源:億速云 閱讀:147 作者:清風(fēng) 欄目:編程語(yǔ)言

本文將為大家詳細(xì)介紹“php正則如何去除注釋”,內(nèi)容步驟清晰詳細(xì),細(xì)節(jié)處理妥當(dāng),而小編每天都會(huì)更新不同的知識(shí)點(diǎn),希望這篇“php正則如何去除注釋”能夠給你意想不到的收獲,請(qǐng)大家跟著小編的思路慢慢深入,具體內(nèi)容如下,一起去收獲新知識(shí)吧。

php有什么用

php是一個(gè)嵌套的縮寫(xiě)名稱,指的是英文超級(jí)文本預(yù)處理語(yǔ)言(php:Hypertext Preprocessor)的縮寫(xiě),它的語(yǔ)法混合了C、Java、Perl以及php自創(chuàng)新的語(yǔ)法,主要用來(lái)做網(wǎng)站開(kāi)發(fā),許多小型網(wǎng)站都用php開(kāi)發(fā),因?yàn)閜hp是開(kāi)源的,從而使得php經(jīng)久不衰。

php正則去除注釋的方法:首先創(chuàng)建好PHP示例文件并包含注釋內(nèi)容;然后通過(guò)“highlight_string(removeComment(file_get_contents('./a.php')));”方法去除注釋即可。

使用正則去除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,輸出如下:

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;

再來(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á)式: \s\n

2.ctrl + R, 不輸入

3.點(diǎn)擊后面的 Replace all

好的,到這里,所有的空行全部刪除。 

如果你能讀到這里,小編希望你對(duì)“php正則如何去除注釋”這一關(guān)鍵問(wèn)題有了從實(shí)踐層面最深刻的體會(huì),具體使用情況還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI