如何用str_replace将csv文件中的php中的单引号替换为2?

问题描述

我有一个PHP脚本,该脚本允许我将CSV文件中的数据插入SQL Server表中。

例如,我在某些行上有

CL2096-CL;CREATURES OF LEASURE;h - Wetsuits;hd - Wetsuits Accessories;9'6" LONGBOARD DOUBLE;ETE 2020
CTEQJ5-RC;RIP CURL;c - Surfwear;ca - Surfwear Men;D'AMS S/S TEE;WINTER 2020/2021
BBBCJ1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'3;ETE 2020
BBBCK1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'7;ETE 2020
BBBCF1-RC;RIP CURL;b - Men Accessories;ba - Bags Men;DAY COVER 6'0;WINTER 2020/2021

我想用文件中的'替换''以便能够插入它们。我尝试了str_replace,但替换无效,我的错误是什么原因造成的?

<?php
    
    include("connexion.php");
    
    $dir   = '//macaroni/d$/ftp/Y2/GET/';
    $allFiles = scandir($dir);
    $dest = '//macaroni/d$/ftp/Y2/GET/COPIES/';
    
    foreach($allFiles as $file) {
    
        if (!in_array($file,array(".","..")))
        { 
            $file = $dir.$file;
            $filename = basename( $file );
            
          if ( strpos( $filename,'BI3_' ) === 0 ) {
                
                  // truncate table  
                    $query = "truncate table dbo.Y2_Style";
                    $stmt = $conn->query( $query );
    
        
                   if (($handle = fopen($file,"r")) !== false) {
    
                     $str = str_replace("'","''",$file);
                     
                     // To remove BOM in the fist cell
                      fseek($handle,3);
                
                while (($data = fgetcsv($handle,9000000,";")) !== false) {        
                    if (empty(array_filter($data))) {
                        
                        continue;
                    }
    
                    
                   $query = "insert into dbo.Y2_Style (stylecode,brandname,department,category,description,season) 
               values('" . $data[0] ."','" . $data[1] ."','" . $data[2] ."','" . $data[3] ."','" . $data[5] ."','" . $data[5] ."')"; 
             
                       $stmt = $conn->query( $query );
                       
                       if (!$stmt) { 
                              $file3 = "D:/xampp/htdocs/retail_BI/errors/erreur_BI3.txt";                      
                              file_put_contents($file3,$query . PHP_EOL,FILE_APPEND | LOCK_EX);
                     }
              }
                fclose($handle);
    
                //Moving the file to another folder             
                if(!rename($file,$dest . $filename)) { 
                       echo "error copy";
                  } 
              } 
           } 
        }
    }
      
    echo "good !";
    ?>

解决方法

尝试一下,让我们知道结果:

$files = glob('../App/*');
foreach($files as $file){
    $file_name = explode('/',$file);
    $file_name = end($file_name);
    if(strpos($file_name,'BI3_') !== 0){
        $file_content = file_get_contents($file);
        $file_content = str_replace("'","''",$file_content);
        $file_content = str_replace("''''",$file_content);
        
        
        // Your Query
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...