【问题标题】:PHP read in multiple lines from text filePHP从文本文件中读取多行
【发布时间】:2014-12-19 21:12:34
【问题描述】:

我有一个现有的 PHP 代码来解析文本配置文件并将每个输入行作为键 => 值对存储在数组中,例如文本文件:

key1 value1
key2 value2
key3 '

if ( foo) 
    blahblah;
else
    blaba;

';

所以 key1 value1 和 key2 value2 可以很容易地解析,但是 key3 value 实际上是单引号多行脚本代码。

我现有的代码类似于

while (!feof($fd)) {
    $buffer = fgets($fd, 4096);
    $temp = explode(' ', $buffer);
    $array[$temp[0]] = $temp[1];
}

但是我如何解析 key3 并评估一个跨多行缩进的脚本代码。一旦我得到预期的输入值,我也希望能够以 HTML 形式输出,保留脚本代码格式,这似乎并不简单,看起来 preg_match 匹配多行,但我认为 fgets 只得到一行一次输入,我该如何使用 preg_match 来做到这一点?有人知道吗?

【问题讨论】:

  • 为什么不存储实际的 php 变量 $key1='value1'; .. 然后使用 include\require
  • 还请注意,脚本代码可能会跨越具有许多标识的多行,我的示例只是非常简单的示例。我想大致了解如何解决这个问题
  • 一般你不会有这个问题,因为这不是你存储变量的方式
  • 好的,一般情况下不是这样 :) 有没有什么骇人听闻的方法可以做到这一点?存储一个长字符串,保留空格,跨多行的换行符。

标签: php


【解决方案1】:

一些替代方案:

【讨论】:

  • 我投票给 JSON。 serialize 是列表的另一种可能性。在这种情况下,任何都比自己滚动要好。
  • 我没有得到第三个选项直接使用PHP代码并包含它,注意配置文件中的脚本代码不是PHP代码,它是一些其他的脚本语言代码。第四个选项 parse_ini_file 似乎没有处理我在这里提到的特殊示例
  • 我们正在引导您远离“特殊样本”,转而使用另一种标准格式或方法。
  • 我建议使用 heredoc 在 PHP 中存储脚本代码。您的代码可以是多行的并且包含任何特殊字符、引号等。php.net/manual/en/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多