2012-07-13 83 views
1

第一眼看到這個評論標籤是爲Apache虛擬主機配置文件:正則表達式查找未註釋的apache配置標記?

##<VirtualHost *:80> 
    ##ServerAdmin [email protected] 
    ##DocumentRoot "C:/xampp/htdocs/dummy-host2.localhost" 
    ##ServerName dummy-host2.localhost 
    ##ServerAlias www.dummy-host2.localhost 
    ##ErrorLog "logs/dummy-host2.localhost-error.log" 
    ##CustomLog "logs/dummy-host2.localhost-access.log" combined 
##</VirtualHost> 

如何才能找到取消註釋標籤並獲得主題之間的內容?

+1

而不是正則表達式,你可能是最好找一個Apache配置文件的解析器。 [這可能會工作](http://pear.php.net/manual/en/package.configuration.config.avail-container.apache.php)。 – Wiseguy 2012-07-13 19:05:20

+0

@Wiseguy Realy tnx bor ...那不是我想要的...但它是非常好的 – 2012-07-13 19:07:51

回答

2

使用這個表達式^\s*[^#\s].+?$用正則表達式選項multyline你趕上matchCollection取消註釋行

+0

它不工作:( – 2012-07-13 19:14:41

+0

應該是「多行」? – octern 2012-07-13 22:59:02

2
$subject = '##<VirtualHost *:80> 
##ServerAdmin [email protected] 
##DocumentRoot "C:/xampp/htdocs/dummy-host2.localhost" 
##ServerName dummy-host2.localhost 
##ServerAlias www.dummy-host2.localhost 
##ErrorLog "logs/dummy-host2.localhost-error.log" 
##CustomLog "logs/dummy-host2.localhost-access.log" combined 
##</VirtualHost>'; 

$pattern = '=[#]{1,}<VirtualHost.[^>]*>(.*?)</VirtualHost>=is'; 
$result = preg_match_all($pattern, $subject, $matches); 

echo '<pre>'.print_r($matches, true).'</pre>'; 

在$匹配[1],你會發現你在找什麼

+0

tnx但它沒有字... – 2012-07-13 19:24:44

+0

當然它的作品: 在這裏檢查:http://www.pagecolumn.com/tool/pregtest.htm – Besnik 2012-07-13 19:29:22

+0

在這裏演示和來源:http://besnik.de/test.php – Besnik 2012-07-13 19:39:44