【问题标题】:How to input text into a php array based on the text formatting如何根据文本格式将文本输入到 php 数组中
【发布时间】:2012-05-15 14:27:44
【问题描述】:

我有一个由 php 打开和读取的文本文档,看起来像这样

ABC: 123

DEF: 456

GHI: 789

所以基本上它是以冒号结尾的一段文本,然后是另一段文本。为了分隔行,有一个换行符(即“ \n ”)

是否可以将其放入由冒号和换行符分隔的数组中?因此,当我打印该值时,它应该如下所示:

"ABC:123,DEF:456,GHI:789"

【问题讨论】:

  • 这些是冒号,不是分号。
  • @octern 你是对的,对此感到抱歉。这是漫长的一天。

标签: php arrays text


【解决方案1】:

您需要做的第一件事是将这些行分开。

$lines = explode("\n", $doctext);

接下来,逐行处理这些行,拆分出适当的值。

$output = array();
foreach ($lines as $line) {
    $line_parts = explode(': ', $line, 2); // Limit 2, in case data contains a colon
    $output[$line_parts[0]] = $line_parts[1];
}

然后,您可以在$output 中找到您的数组。请注意,您还应该对这些行添加一些验证,以确保它们包含您期望的数据。此外,如果行可选地包含冒号和值之间的空格,或可变数量的空格,则在冒号上拆分并在值上使用trim(),视情况而定。

【讨论】:

  • 这正是我所需要的,非常感谢。真的很快,$line_parts = explode(': ', $line, 2); 2 到底是做什么的?
  • 我在评论中提到了它,它在explode()php.net/manual/en/function.explode.php 的文档中被引用。基本上,它将返回的值的数量限制为 2。假设您在第一个冒号之后有数据,其中也有一个冒号,例如ABC: Some:text。如果没有 2,您将丢失 :text,因为它会在索引 2 处的数组中。如果有 2,它将包含在元素 1 中。如果您的数据格式正确,则绝对不需要它,但我会包括它,以防万一。
  • 非常感谢,因为我确实有一些行包含第二个冒号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2019-08-03
相关资源
最近更新 更多