2014-02-26 60 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'

谢谢你的时间!