【问题标题】:Split the output in PHP在 PHP 中拆分输出
【发布时间】:2011-08-30 15:17:27
【问题描述】:

我正在尝试使用 split、preg_split 或 explode 将以下数据解析为数组,以便我可以轻松地打印和修改数据:

28782188    /var/opt

当我跑步时

print_r(preg_split('/ /', $input));

我得到的只是

Array ( [0] => 28782796 /var/opt )

有没有办法让 php 与我从 du 调用中得到的空格分开?

【问题讨论】:

  • 你试过explode(' ',$input);吗?

标签: php split explode preg-split du


【解决方案1】:

我想你想要

preg_split('/\s+/',$input);

如果我没记错的话,用任何空白字符分隔 - du 用 制表符 (\t) 分隔,尽管不要引用我的话...

编辑将正则表达式更改为有效的...

【讨论】:

  • 这是我得到的输出:Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => )
  • 将正则表达式改为/\S+/
  • @Paul 尝试更新版本(直接从 preg_split() manual page 上的示例中提取)
  • 漂亮,与 preg_split('/[\s,]+/',$input);非常感谢!
  • @Paul 请注意,它也会用逗号分隔,您可能希望从字符类中删除逗号...我刚刚在上面再次编辑。
【解决方案2】:
<?php 
  $value = '28782188 /var/opt';
  $values = array();

  //du might separate size and directory with **multiple** space/tabs
  preg_match_all('/\w*\S[\w\/]*/', $value, $values, PREG_PATTERN_ORDER);

  print_r($values);
  // outputs: Array ( [0] => '28782188', [1] => '/var/opt' )
?>

【讨论】:

  • 输出:数组([0] => [1] => [2] => [3] => [4] =>)
  • @Clement,请参阅 DaveRandom 的帖子了解更简单的方法。
【解决方案3】:

尝试print_r(explode(' ', $input)); 打破空白输入。

【讨论】:

  • 仍然得到:数组([0] => 28792516 /var/opt)
  • 尝试可以在 '\t' 上爆炸
  • 那也没用,DaveRandom 找到了一个可行的解决方案。
【解决方案4】:

只需使用explode...

print_r(explode(' ', $input));

【讨论】:

  • 这是我尝试的第一个技巧。 DaveRandom 最终找到了解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多