【问题标题】:How to read a file line using php in a javascript variable without the breakline character?如何在没有换行符的javascript变量中使用php读取文件行?
【发布时间】:2010-04-30 13:56:21
【问题描述】:

我在服务器上有一个包含 10 行文本的 txt 文件。有时会重写文本文件,我使用“\r\n”得到新行。我的问题显示何时我想在 javascript 变量中加载行。我这样做,但这仅适用于数字或文件的最后一行,因为它s not using the breakline tag: var x = '<?php echo $file[0]; ?>'; Ive 试图提醒(x)但它不工作....(只有当我阅读最后一行) 有什么想法吗?

【问题讨论】:

    标签: php javascript file


    【解决方案1】:

    我不确定我是否完全理解这个问题,但您应该能够使用 json_encode() 来适当地转义数据:

    var x = <?php echo json_encode($file[0], JSON_HEX_TAG); ?>;
    

    正如其他人所说,您可以trim() 数据以删除尾随空格/换行符。除此之外,您仍应使用json_encode(),否则仍有可能突破 javascript 字符串(例如,通过发送带引号的字符串)。

    【讨论】:

    • 但是 json_encode() 不是用来输出整个数组的吗?我的问题是我想从文本末尾剪掉那个“\r\n”断线标记,断线是不可见的,但它会影响我的脚本的工作。
    • json_encode() 基本上可以将任何 PHP 变量转换为“JavaScript 安全”表示。它不会删除您的换行符,而是会安全地对它们进行编码。更多信息:php.net/json_encode
    • +1 比尝试解决 JavaScript 转义要好得多。理想情况下,使用 JSON_HEX_TAG 标志来确保内容中的 &lt;/script&gt; 不会导致周围的脚本块提前结束。
    【解决方案2】:

    你想要trim():

    var x = '<?php echo trim($file[0]); ?>';
    

    但是如果你阅读了file(),你可以用trim()array_map()它,然后继续做你正在做的事情:

    $values = array_map("trim", file('input-file.txt'));
    

    您可能会考虑如果有人决定使用这种方法在变量中包含单引号会发生什么。

    编辑:然后您可以按照其他答案中的建议添加json_encode()

    var x = <?php echo json_encode($file[0]); ?>;
    

    【讨论】:

    • 或许rtrim() 更合适?
    【解决方案3】:

    谢谢大家!我在 artlung 和 Richard JP Le Guen 的帮助下解决了这个问题:

    var x = <?php rtrim($file[0]); ?>
    

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 2012-09-02
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      相关资源
      最近更新 更多