我有这段代码:
<?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'
进一步向下我做了一个等于data.php内部数据的内容。我不能出于某种原因在data.php中显示php标签内的数据,但我可以显示纯文本:
<?php
$hej = "This will not display";
return json_encode($hej);
?>
This will display
希望你能帮忙,理解我的问题!
答案 0 :(得分: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);
答案 1 :(得分:1)
而不是
return json_encode($hej);
试
echo json_encode($hej);
答案 2 :(得分:-1)
我找到了答案! $dataFileName = 'http://www.dota2u.com/newd2u/longpoll/data.php'
感谢您的时间!