4

在过去的几个小时里,我一直在努力寻找解决这个问题的方法。我正在发送一个 AJAX 请求,在进行一些小的更改之前,它运行良好,将一个可爱的可用字符返回给 Javascript。然而,现在,一个 \r\n 被返回,我花了太长时间追踪它。我找到它被包含在哪里的最后一种方法是在我的脚本周围的各个地方回显“OMG”,直到它出现在 HTML 的第 2 行而不是第 1 行。这是有问题的脚本:

// Import Global Game Variables
include('../engine/engine_core_functions.php');

// Convert our gamestate(gameID)
//$curGamestate = getCurrentGamestate($gameID);

// Make sure it's a valid turn
if(isMyTurn()) {
    // Draw a card from the card drawing mechanism
    $cardValue = drawCard();
    $cardValue = str_replace("\r", 'R', $cardValue);
    echo $cardValue;
}
else echo 'Error 3';

跳行紧跟在顶部的包含文件之后。在包含之前,没有换行符,在包含之后,换行符。所以我去包含文件。放置我的

echo 'OMG!';

在包含文件的 VERY END 不会产生换行符。这使我相信包含文件可能(为什么!?)会产生换行符(现在是凌晨 5 点......)。但是,有问题的包含文件的顶部有多个包含文件。它们都不会产生中断。整个“engine_core_functions.php”根本不生成换行符。

但是,当它包含在上面显示的脚本中时,会显示一个中断。不用说,我感到困惑和非常恼火。我可以简单地删除有问题的字符(通过 PHP 或 Javascript),但这让我很恼火,我似乎无法解决问题的根源。请帮忙,谢谢。

4

1 回答 1

3

您可能在文件的开头或其他地方有某种不可见的 BOM 标记。始终让<?或成为 PHP 文件的第一个字符串,并养成习惯,如果它要被另一个文件包含,则<?php不要以整个 PHP 文件结尾。?>

于 2013-02-19T10:41:32.127 回答