【问题标题】:In PHP, Removing first element in CSV String在 PHP 中,删除 CSV 字符串中的第一个元素
【发布时间】:2011-03-11 23:40:09
【问题描述】:

我只是想使用 PHP 从字符串中取出第一个 csv。以下是几个例子:

  • “鲈鱼,裹粉或裹粉,油炸” => “裹粉或裹粉,油炸”
  • “金枪鱼,新鲜、烤或烤” => “新鲜、烤或烤”
  • “黄花鱼,裹面包屑或裹糊,烘烤”=>“裹裹面包或裹糊,烘烤”

等等……

谢谢。

【问题讨论】:

  • 抱歉,您能否提供更多信息,不确定您的意思。
  • 您是否已经有将 CSV 文件加载到内存中的代码?如果是这样,请您发布相关部分吗?
  • 显示 CSV 数据,因为它不会分离两个元素,这意味着您要修改 csv 元素内的数据而不是删除元素。
  • 正如 Ben 所说,你如何填充你的字符串......如果它来自文件,那么 PHP 的 fgetcsv() 函数可以为你简化事情

标签: php string csv


【解决方案1】:

你可以试试这个:

$csvArray = explode(",", $csv);
array_shift($csvArray);
$newCsv = implode(",", $csvArray);

【讨论】:

  • 你不需要(并且不应该)通过引用一个内置来传递一个数组(或者任何东西,真的)函数,除非函数明确要求引用。除了是counter-intuitively slow,它以前是 PHP 核心中的security risk(查看“中断”错误...)
  • 如果任何值实际上包含逗号,则将不起作用,而内置的 CSV 处理函数可以处理此问题
  • array_shift 确实请求参考。
  • @Mark Ba​​ker:是的,但这只是基于他发布的示例的快速解决方案。
  • array_shift 与参考一起工作,但您无需明确创建参考以使其工作。你所做的被称为“调用时传递引用”,并且被认为是一种糟糕的做法,以至于他们添加了一条错误消息只是为了告诉人们停止这样做。
【解决方案2】:

我建议使用 str_getcsv 或类似的解析 csv 的东西,这将考虑 CSV 字符串中的任何引号和逗号。之后你就可以 array_shift

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2011-07-14
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多