【问题标题】:"Unexpected EOF" : How do I remove all newlines from php code?“意外的 EOF”:如何从 php 代码中删除所有换行符?
【发布时间】:2012-01-16 06:36:18
【问题描述】:

我有一个 php 脚本正在读取 (file_get_contents) 中的文件。我想用 br 替换所有换行符,并去掉所有其他字符。但是,将内容解释为 javascript 变量时出现错误。

我认为有罪的一方是“^Z”字符,但我不知道如何摆脱它。 “^M”是一个git字符,我相信“^Z”实际上是字符串本身的一部分。

如何在 php 中去掉这个字符?


好的,我之前的问题是错误的,所以我用新内容更新了它。

如何确保从 php 字符串中删除所有换行符?使用 file_get_contents 读入此字符串,然后使用文件内容动态创建 javascript。 “\n”替换为“NEW”,“\r”替换为“”。

但是,我收到“Unexpected EOF”错误,当我复制字符串并将其粘贴到控制台时,有些东西给了我换行符。如何确保删除所有换行符(就此而言的空白)?

trim() str_replace preg_replace

已全部使用,不胜感激!

【问题讨论】:

  • ^Z 通常是 ctrl+z。它可以表示文件结束。
  • 我认为您误解了错误信息;这是您的代码中的错误,而不是您的数据中的错误,它是关于意外的程序结束,而不是文字 ^Z 字符。由于显然您有多层解释,并且您既没有发布代码也没有发布消息的来源,我们不得不猜测。我的猜测是你有一个 PHP 语法错误。过早的 EOF 警告来自像 if (1) then 这样的代码,您至少必须关闭块才能修复错误。
  • 或者,如果您正在评估一个单引号字符串,该字符串本身包含未转义的单引号(例如),这可能会导致“意外的 EOF”,其中第一个未转义的引号会过早地终止表达式。截图看起来JSON.parse() 的第一个参数中有一些奇怪的东西,是这样吗?

标签: php javascript regex


【解决方案1】:

CTRL-Z 是文本文件的 DOS/Windows 文件结束符。如果您检查输入文件,您可能会在其中找到该字符。

它源于最早的日子(CP/M 不少于),当时文件是磁盘扇区大小的精确倍数,因此您不能拥有不是该倍数的文件。

因此,如果您想提前结束文件,您可以在其中放置一个特殊的文件结束字符,以便文件读取例程能够理解。这对于二进制文件来说并不是一个真正的问题,因为它们最后是否有无关信息并不重要——它很可能会被忽略。但是,您_不希望在您漂亮的 WordStar 3.3 小文档末尾出现任何垃圾。

^Z 字符是代码号 26,因此您应该能够将 str_replace\x1a 字符一起使用,例如:

$str = str_replace ("\x1a", "", $str);

【讨论】:

    【解决方案2】:

    首先,没有 git 字符这样的东西。

    ^M 是回车的代码,它可能来自正在处理该文件的 Windows 机器。

    ^Z 看起来可能是您可以在此处阅读的“替代”字符:http://en.wikipedia.org/wiki/Substitute_character,基本上它的意思是“我不知道如何表示这个位置的字符”

    也就是说,我看到 paxdiablo 就在我之前发布了,该代码应该可以解决问题。祝你的项目好运!

    【讨论】:

    • 我的意思不是 git 字符,因为“一个字符 git 正在添加到我的文件中。”这只是差异,每当我说“git diff”时,它似乎会出现在任何修改发生的地方。不过,我并没有开始相信这可能是问题所在:)
    • 啊,好的,您使用的是哪种操作系统?您是否正在与其他人合作开展不同类型的合作?
    • 是的,这是在 windows 中编译的。最终,php 脚本生成一个 HTML 页面并通过 wkhtmltopdf 运行它。我正在动态生成 JavaScript,并且需要 wkhtmltopdf 才能正确执行该 JS(我知道有点丑陋,但我现在坚持的设计决定)
    猜你喜欢
    • 2011-07-12
    • 2012-06-04
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多