Je regarde peut-être ceci de la mauvaise manière, mais j'ai une forme qui fait sa chose (envoie des courriels etc etc) mais j'ai aussi mis du code pour faire un simple fichier plat csv avec certains l'utilisateur a entré les détails. Si un utilisateur met accidentellement par exemple "himynameis", "bob" cela casserait la ligne csv (parce que les guillemets n'étaient pas encapsulés) ou si j'utilise htmlspecialchars() et stripslashes() sur les données, Je me retrouve avec une valeur de données laide de 'himynameis","bob'
.encadrant des guillemets doubles dans le tableau
Ma question est, comment puis-je gérer les données entrantes pour répondre pour « " » être mis sous la forme sans casser mon fichier csv?
ceci est mon code pour créer le fichier journal 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
Voici un échantillon des données de tableau entrant:
Array
(
[0] => Array
(
[0] => 2010/05/17 10:22:27
[1] => xxx.xxx.xxx.xxx
[2] => title
[3] => """"himynameis","bob"
[4] => [email protected]
[5] => 346346
[6] => No file attached.
)
)
TIA
Jared
yup, si j'encapsulent les guillemets doubles avec plus doublequotes, le csv est très bien (je sais que) je demande comment puis-je faire cela. Je pense peut-être preg_replace, ou y a-t-il un autre moyen? – Jared
légende mate, bravo! – Jared