Php 在数组中包含双引号

Php 在数组中包含双引号,php,csv,Php,Csv,我可能看错了,但我有一个表单,可以完成它的工作(发送电子邮件等),但我也输入了一些代码,用一些用户输入的细节制作一个简单的平面文件csv日志 如果用户不小心输入了例如“himynameis”、“bob”,这可能会中断csv行(因为引号没有封装),或者如果我对数据使用htmlspecialchars()和stripslashes(),我最终会得到一个丑陋的数据值“himynameis”、“bob” 我的问题是,在不破坏csv文件的情况下,如何处理传入的数据,以满足表单中的“输入”需求 这是我创建c

我可能看错了,但我有一个表单,可以完成它的工作(发送电子邮件等),但我也输入了一些代码,用一些用户输入的细节制作一个简单的平面文件csv日志

如果用户不小心输入了例如“himynameis”、“bob”,这可能会中断csv行(因为引号没有封装),或者如果我对数据使用htmlspecialchars()和stripslashes(),我最终会得到一个丑陋的数据值
“himynameis”、“bob”

我的问题是,在不破坏csv文件的情况下,如何处理传入的数据,以满足表单中的“输入”需求

这是我创建csv日志文件的代码

@$name = htmlspecialchars(trim($_POST['name']));
@$emailCheck = htmlspecialchars(trim($_POST['email']));
@$title = htmlspecialchars(trim($_POST['title']));
@$phone = htmlspecialchars(trim($_POST['phone']));


function logFile($logText)
{

    $path = 'D:\logs';
    $filename = '\Log-' . date('Ym', time()) . '.csv';
    $file = $path . $filename;

    if(!file_exists($file))
    {
        $logHeader = array('Date', 'IP_Address', 'Title', 'Name', 'Customer_Email', 'Customer_Phone', 'file');

        $fp = fopen($file, 'a');        

            fputcsv($fp, $line);

    }

    $fp = fopen($file, 'a');


    foreach ($logText as $record) {
    fputcsv($fp, $record);
}




}

//Log submission to file
        $date = date("Y/m/d H:i:s");
        $clientIp = getIpAddress(); //get clients IP address
        $nameLog =  stripslashes($name);
        $titleLog  = stripslashes($title);

        if($_FILES['uploadedfile']['error'] == 4) $filename = "No file attached."; //check if file uploaded and return
        $logText = array(array("$date", "$clientIp", "$titleLog", "$nameLog", "$emailCheck", "$phone", "$filename"));

        logFile($logText); //write form details to log
以下是传入阵列数据的示例:

Array
(
    [0] => Array
        (
            [0] => 2010/05/17 10:22:27
            [1] => xxx.xxx.xxx.xxx
            [2] => title
            [3] => """"himynameis","bob"
            [4] => example@example.com
            [5] => 346346
            [6] => No file attached.
        )

)
短暂性脑缺血发作

Jared

您可以将用户输入中的任何
更改为
。这是由OpenOffice Calc和Excel以及其他程序推荐的,并将由OpenOffice Calc和Excel正确处理

您可以使用str_replace进行此操作。它可能比preg_replace稍快一些:

function csv_quote_escape($input)
{
  return str_replace('"', '""', $input);
}

是的,如果我用更多的双引号来封装双引号,csv很好(我知道),我在问我怎么做。我在想也许是preg_替换,或者有其他方法吗??