2009-10-18 236 views
0

上午。我想從位於本地服務器上的文件中取出所有段代碼。問題是我似乎沒有得到任何地方,沒有PHP錯誤只是瀏覽器錯誤。處理php代碼

$file_contents = "<xmp>".file_get_contents("../www.cms.actwebdesigns.co.uk2/pageIncludes/instalation/selectMainPages.php")."</xmp>"; 

if(preg_match_all("#<\?php((?!\?>).)*#is", $file_contents, $matches)) 
{ 
    foreach($matches[0] as $phpCode) 
    { 
     $code = "<xmp>".$phpCode."\n?></xmp>"; 
    } 
} 
echo "dsds"; 
?> 

可能有人請點我在正確的方向?

+3

Baaaaad問題。考慮花費一些時間來解釋原因,影響,錯誤和意圖。巴阿。 – gahooa 2009-10-18 04:24:26

+0

這不是早上。 – random 2009-10-18 04:30:32

+0

在過去的14個月中,我一直在做一個插件和一個CMS(需要45秒安裝和你走開!),但我想通過安裝到預先製作的PHP網站去打結。所以我需要嘗試分離數據。 錯誤 此網頁不可用。 空網頁可能會暫時關閉,或者它可能已永久移動到新的網址。 有關此錯誤的更多信息 以下是原始錯誤信息 錯誤101(net :: ERR_CONNECTION_RESET):未知錯誤。 – 2009-10-18 04:31:59

回答

1

您可能要來標記使用標記生成器擴展的PHP腳本:

http://php.net/manual/en/book.tokenizer.php

的擴展,因爲PHP V4.3.0被內置到PHP。

$tokens = token_get_all(file_get_contents($file)); 

http://www.php.net/manual/en/function.token-get-all.php

+0

不知道如何使用它。將所有代碼放入數組中。對我來說,使用它不會導致內爆或其他問題,然後我回到原點? – 2009-10-18 04:34:17

+0

你可以遍歷並移除所有不是PHP代碼的東西。 – mauris 2009-10-18 04:46:31

0

不知道如何使用它。將所有代碼放入數組中。對我來說,使用它不會導致內爆或其他問題,然後我回到原點?

+0

這是對答案的評論,或者你應該編輯你的問題。 – random 2009-10-18 04:31:06

2

這個工作:

$file_contents = token_get_all(file_get_contents("../www.cms.actwebdesigns.co.uk2/logged.php")); 
$start=0; 
$end=0; 
$segmentArray = array(); 
foreach($file_contents as $key => $token) 
{ 
    $tokenName = token_name($key); 
    if($start==0 && $end==0 && $tokenName=="T_OPEN_TAG") 
    { 
     $start=1; 
    } 
    if(start==1 && $end==0 && $tokenName!="T_CLOSE_TAG") 
    { 
     $entryNo = count($segmentArray); 
     $segmentArray[$entryNo][] = $token; 
    } 
    if($tokenName=="T_CLOSE_TAG") 
    { 
     $start=0; 
    } 
} 
+0

這真棒=)恭喜! – mauris 2009-10-18 05:02:07

+0

遇到問題。令牌名稱的大部分都返回UNKNOWN。任何人都知道爲什麼? – 2009-10-18 05:37:15