【问题标题】:Line feed is showing up unexpectedly in PHP换行在 PHP 中意外显示
【发布时间】:2013-02-04 00:11:38
【问题描述】:

在过去的几个小时里,我一直在努力寻找解决这个问题的方法。我正在发送一个 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),但这让我很恼火,我似乎无法解决问题的根源。请帮忙,谢谢。

【问题讨论】:

  • 关闭../engine/engine_core_functions.php中的php标签后检查换行符
  • 您是否确定在 PHP 文件中 <?php 之前或 ?> 之后有 no 个字符(空格、换行符)?

标签: php include line-breaks linefeed


【解决方案1】:

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

【讨论】:

  • 感谢上面的贡献者,我实际上刚刚在右侧发现了另一个问题,它有我的确切问题(顺便说一下,解决方案)。我在 engine_core_functions.php 中的 php 结束标记下方有一些违规空格。非常感谢您的贡献! stackoverflow.com/questions/13892722/…
  • 我在使用fopen('php://output', 'w') 输出文件附件时遇到了这个问题 - UTF-8 BOM 前面有一个换行符!根据此处的答案,关闭 ?> 标记和随后的空行是我的问题的原因,尽管这不是问题出现的 PHP 文件,而是堆栈更高的控制器文件。请务必检查所有参与服务请求的 PHP 文件!
猜你喜欢
  • 2021-07-30
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2017-06-24
  • 2019-11-16
  • 2017-12-05
相关资源
最近更新 更多