2014-02-26 91 views
1

我有這樣一段代碼文件:包括使用JSON

<?php 

set_time_limit(0); 

// arquivo cujo conteúdo será enviado ao cliente 
$dataFileName = 'data.php'; 


while (true) 
{ 
    $requestedTimestamp = isset ($_GET [ 'timestamp' ]) ? (int)$_GET [ 'timestamp' ] : null; 

    // o PHP faz cache de operações "stat" do filesystem. Por isso, devemos limpar esse cache 
    clearstatcache(); 
    $modifiedAt = filemtime($dataFileName); 

    if ($requestedTimestamp == null || $modifiedAt > $requestedTimestamp) 
    { 
     $data = file_get_contents($dataFileName); 

     $arrData = array(
      'content' => $data, 
      'timestamp' => $modifiedAt 
     );  

     $json = json_encode($arrData); 

     echo $json; 

     break; 
    } 
    else 
    { 
     sleep(1); 
     continue; 
    } 
} 

正如你所看到的,我說$dataFileName = 'data.php'再往下我做一個conten這等於data.php裏面的數據。在data.php我不能因爲某些原因顯示PHP標籤內的數據,但不過,我可以顯示文本純:

<?php 
$hej = "This will not display"; 
return json_encode($hej); 
?> 
This will display 

希望能幫到你,明白我的問題!

回答

2

因爲你是呼應了特殊字符,也許你需要將它們轉換爲正確顯示。

可以嘗試htmlentities其將這些字符 -

echo htmlentities($data); 

EDIT-1 例如(假設data.php包含PHP代碼) -

$data = file_get_contents("a.php"); 
echo htmlentities($data); 
/* 
    OUTPUT - 
    <?php $hej = "This will not display"; return json_encode($hej); ?> This will display 
*/ 

EDIT -2- 如果你希望實際上想要執行該文件並將其結果存儲在一個字符串中,那麼輸出緩衝區就是你所需要的。

基本上你執行php文件,文件的輸出存儲在緩衝區中。在它的最後,緩衝區內容被複制到一個字符串。

這應該工作 -

ob_start(); 
include("data.php"); 
$res = ob_get_contents(); 
ob_end_clean(); 
var_dump($res); 
+0

嗯,它不工作:( –

+0

什麼是輸出?我試圖打開文件並回顯出來,它似乎工作正常。 – Kamehameha

+0

即時通訊只獲取不在php標籤內的輸出 –

1

而不是

return json_encode($hej); 

嘗試

echo json_encode($hej); 
+0

我試過了,它不會工作...還有其他建議嗎? –

+0

對不起,我錯過了你調用file_get_contents的地方。這不會解析文件中的PHP。你只會得到文件內容的轉儲,包括php代碼。我不認爲那真的是你想要的,但我不能確切地告訴你要用它做什麼,所以我不確定。 – Rob

-1

我找到了答案! $dataFileName = 'http://www.dota2u.com/newd2u/longpoll/data.php'

謝謝你的時間!