【问题标题】:PHP data normalization on array importer?数组导入器上的PHP数据规范化?
【发布时间】:2021-03-02 13:41:45
【问题描述】:

是否可以直接在 csv 导入器数组上进行数据规范化? 我有以下内容:

          foreach($importData_arr as $importData){
           // var_dump($importData);
            $insertData = array(
               "EAN"=>$importData[0], preg_replace('\'', '', "EAN"),
               "Brand"=>$importData[1],
               "Name"=>$importData[2],
               "Size"=>$importData[3],
               "PCD"=>$importData[4],
               "Offset"=>$importData[5],
               "Bore"=>$importData[6],
               "Color"=>$importData[7],
               "Price"=>$importData[8],
               "Stock"=>$importData[9],
               "ImageURL"=>$importData[10]);
            RimsUpload::insertData($insertData);

但我收到错误: preg_replace(): 没有找到结束分隔符'''

据我所知,这个 \' 应该允许在我的 EAN 列中搜索 ' 并替换为 'nothing'。但我不确定它是否可以像这样直接在数组上?

【问题讨论】:

  • 你的正则表达式需要分隔符,试试preg_replace('/\'/', '', "EAN")
  • @Nick str_replace 就够了。
  • @u_mulder 同意,但只是试图指出导致 OP 错误的原因。如果我发布答案,我肯定会这么说。
  • 好吧,我认为 str_replace 也足够了.. 但显然它不会接受它?

标签: php arrays normalization


【解决方案1】:

当您想替换一个符号时,不需要正则表达式,str_replace 可以完成这项工作。

另外,preg_replace('\'', '', "EAN")甚至带有正确的分隔符,(例如#):

preg_replace('#\'#', '', "EAN")

将返回字符串EAN

显然,您希望将' 替换为$importData[0] 值。

所以你的代码应该是:

$insertData = array(
    "EAN" => str_replace('\'', '', $importData[0]),
    "Brand"=>$importData[1],
    "Name"=>$importData[2],
    "Size"=>$importData[3],
    "PCD"=>$importData[4],
    // ...

如果你仍然想使用正则表达式(这里是多余的),那么提供correct delimiters,例如:

$insertData = array(
    "EAN" => preg_replace('#\'#', '', $importData[0]),
    "Brand"=>$importData[1],
    "Name"=>$importData[2],
    "Size"=>$importData[3],
    "PCD"=>$importData[4],
    // ...

【讨论】:

  • 谢谢,非常有帮助的答案。就像一个魅力:“EAN”=> str_replace('\'', '', $importData[0]),很高兴知道如何使用正则表达式,因为我稍后会在其他一些领域需要它:-)
猜你喜欢
  • 1970-01-01
  • 2012-02-04
  • 2021-05-13
  • 2011-05-18
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
相关资源
最近更新 更多