从 php mysql 中的 csv 文件的标题中删除反斜杠“\”

Posted

技术标签:

【中文标题】从 php mysql 中的 csv 文件的标题中删除反斜杠“\\”【英文标题】:Remove backslashes "\" from title from csv file in php mysql从 php mysql 中的 csv 文件的标题中删除反斜杠“\” 【发布时间】:2016-02-18 11:48:45 【问题描述】:

我正在编写一个脚本,将数据从 mysql 导出到 csv 文件中。它的工作完美。

当我从管理面板输入带有撇号的歌曲标题时,例如test'123',数据保存在数据库中,例如test\'123\'

现在,当我将数据导出到 csv 文件时,标题会原样保存,并带有反斜杠“\”,如下所示:

现在我希望当我将数据从数据库导出到 csv 文件时,反斜杠只会从 csv 文件中删除,而不是从数据库中删除。

这是我导出数据的代码:

$query = "SELECT plist.playlist_id, plist.playlist_name, plist.playlist_shortcode, psong.song_id, psong.list_order,
              psong.song_playlist, psong.mp3, psong.ogg, psong.title, psong.buy, psong.buyy, psong.buyyy, psong.price, psong.cover, 
              psong.artist
              FROM " . $pre . "hmp_songs As psong
              LEFT JOIN " . $pre . "hmp_playlists As plist
              On plist.playlist_name = psong.song_playlist
              Where plist.playlist_id IS NOT NULL
              And plist.playlist_name IS NOT NULL
              And plist.playlist_shortcode IS NOT NULL
              And psong.song_id IS NOT NULL
              And psong.list_order IS NOT NULL
              And psong.song_playlist IS NOT NULL
              And psong.mp3 IS NOT NULL
              And psong.ogg IS NOT NULL
              And psong.title IS NOT NULL
              And psong.buy IS NOT NULL
              And psong.buyy IS NOT NULL
              And psong.buyyy IS NOT NULL
              And psong.price IS NOT NULL
              And psong.cover IS NOT NULL
              And psong.artist IS NOT NULL";

    $result = mysqli_query($link,$query) or die("Error executing query: ".mysqli_error());
    $row = mysqli_fetch_assoc($result);

    $line = "";
    $comma = "";

    foreach($row as $name => $value) 
        $line .= $comma . '"' . str_replace('"', '""', $name) . '"';
        $comma = ",";
    

    $line .= "\n";
    $out = $line;

    mysqli_data_seek($result, 0);
    while($row = mysqli_fetch_assoc($result))
        $line = "";
        $comma = "";
        foreach($row as $value) 
            $line .= $comma . '"' . str_replace('"', '""', $value) . '"';
            $comma = ",";
        
        $line .= "\n";
        $out .= $line;
    

    $csv_file_name = 'HMP_'.date('Ymd_His').'.csv'; # CSV FILE NAME WILL BE table_name_yyyymmdd_hhmmss.csv
    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=".$csv_file_name);
    header("Content-Description:File Transfer");
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Type: application/octet-stream');
    echo __($out,"hmp");
    exit;

我怎么能这样做,因为我不知道。谢谢

【问题讨论】:

【参考方案1】:

php 函数 stripslashes 将为您工作。

示例:

<?php
$str = "Is your name O\'reilly?";
echo stripslashes($str);
?>

输出

你叫奥莱利吗?

代码中的用法:

foreach($row as $value) 
    $line .= $comma . '"' . str_replace('"', '""', stripslashes($value)) . '"';
    $comma = ",";

【讨论】:

thanx alot .. 你的回答帮帮我......几分钟后我接受你的回答 已用代码更新了我的帖子,您可以在其中使用stripslashes

以上是关于从 php mysql 中的 csv 文件的标题中删除反斜杠“\”的主要内容,如果未能解决你的问题,请参考以下文章

使用php从csv快速更新大量数据mysql [关闭]

忽略空列以将数据导出到 php mysql 中的 csv 文件

PHP:CSV 导入 MYSQL 总是少于 CSV 文件中的实际行数?

将数据插入 MySQL 数据库时使用 PHP 替换 CSV 文件中的空值

如何从 php 中的当前会话中获取 csv 文件?

php 使用SplFileObject读取CSV文件。从CSV文件定义标题或管理标题行。返回数组中的行,标题值为