2011-12-15 63 views
1

可以說我有一個PHP文件中的以下部分開始:解析出代碼註釋之間塊PHP

/** 
* @SomethingStart 
*/ 
protected static $var1 = '1'; 
protected static $var2 = '2'; 
protected static $var3 = '3'; 
/** 
* @SomethingEnd 
*/ 

我試圖找出我怎麼能先解析出評論的內容與@ SomethingStart和@SomethingEnd(不包括註釋,然後其次,我怎麼能代替這兩個標記之間的內容

+0

您可以使用`preg_replace_all` – Cyclonecode 2011-12-15 11:14:38

回答

4

你可以得到文件的內容與功能:

file 

http://www.php.net/manual/en/function.file.php

返回一行數組。然後你可以使用的foreach和匹配線路含量

$switch = false; 
$lines = file('filepath'); 
$string = ''; 
foreach($lines as $k => $v) 
{ 
    if(preg_match('/@(.*)End$/'. $v)) 
    { 
     $switch = false; 
     break; 
    } 
    if($switch == true) 
    { 
     // do replacements, or anything you want with the following lines 
     // or add, or remove, even if you might have some problems with it 
     // for this you might not consider using foreach, instead you might 
     // try array_walk 
    } 
    if(preg_match('/@(.*)Start$/', $v)) 
    { 
     $switch = true; 
    } 


    $string .= $v; 
} 

echo $string; 

對於array_walk,請閱讀本http://www.php.net/manual/en/function.array-walk.php

試試吧。

+0

也許開始行和結束行的preg_match應該在實際處理行之前不要意外編輯它們。 – Erbureth 2011-12-15 11:52:52