【问题标题】:PHP How to trim, trunc, complex dataPHP 如何修剪、截断、复杂的数据
【发布时间】:2017-02-02 14:02:20
【问题描述】:

这是一些数据

案例 1 "("2017-02-02 21:15:00",201,1,"E.CO-PUAS KAJANG/AC PANEL ETS",16977.00000)" 案例2 "("2017-02-02 21:15:00",201,6,"SPARE 6",)"

我需要在没有"(的情况下提取数据,存储到5个变量中

$date = "2017-02-02 21:15:00";

$code = 201;

$id = 1;

$name = "E.CO-PUAS KAJANG/AC PANEL ETS";

$value = 16977.00000;

注意:像案例 2 这样的一些案例返回没有值并设置为 0

请给我一些例子或提示。我找到了教程修剪,但它只修剪一次

我希望输出是这样写的

echo $date;

echo $code;

echo $id;

echo $name;

echo $value;

【问题讨论】:

  • 了解以下函数:explodestr_replace。学完这些应该很容易。
  • trim($str,'()') 用于删除( & )
  • 您的$name 字段是否可以包含逗号和/或双引号?如果是这样,那就有点困难了。

标签: php substring trim truncate


【解决方案1】:

修改答案以更好地处理数据...而且这看起来要短得多。

$str='("2017-02-02 21:15:00",201,1,"E.CO-PUAS KAJANG/AC PANEL ETS",16977.00000)'; 
$data=trim($str,'()');
$data_array=str_getcsv($data);

$date = $data_array[0];

$code = $data_array[1];

$id = $data_array[2];

$name = $data_array[3];

if($data_array!='')
    $value = $data_array[4];
else
    $value= 0;

【讨论】:

  • 当心我在上面评论中提到的边缘情况。如果name 字段可以包含逗号,那么这个算法就会失效,你可能不得不求助于使用适当的解析器。
  • 嗯。在那种情况下,也许 getcsv 是要走的路?
  • 是的,str_getcsv() 应该可以处理大部分(如果不是全部)潜在问题。
猜你喜欢
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2010-09-09
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多