Php 如何删除SQL输出中的逗号以在CSV中打印?
所以我有一个多维数组-Php 如何删除SQL输出中的逗号以在CSV中打印?,php,sql,csv,drupal,Php,Sql,Csv,Drupal,所以我有一个多维数组-$result-类似这样: [3] => stdClass Object ( [ProfileID] => 7656 [Practice_Name] => Some Name, MD [some_id] => [Telephone] => (816)531-0930 [Email] => some@some.com [Contact_
$result
-类似这样:
[3] => stdClass Object
(
[ProfileID] => 7656
[Practice_Name] => Some Name, MD
[some_id] =>
[Telephone] => (816)531-0930
[Email] => some@some.com
[Contact_Name] => Some Name
[Address] => Some Rd, Ste 40
[City] => Some City
[State] => MO
[ZipCode] =>
[Last_Accessed] => 123479
[Some_statis] => Active
)
我正在使用以下代码将所有阵列打印到drupal中的CSV中:
header("Cache-Control: public");
header("Content-Type: application/octet-stream");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename=\"contacts.csv\";" );
header("Content-Transfer-Encoding: binary");
foreach($result as $row) {
$line = implode(",", (array) $row) . PHP_EOL;
print $line;
}
drupal_exit();
现在它将多维数组的所有内容拆分为列。但问题是,如果结果中有逗号,则会添加额外的列。所以“somename,MD”导致MD被推到另一列
你知道如何避免这种情况吗?我可以删除其中的逗号,但没有幸进行preg_替换。您可以使用fputcsv正确转义csv
$fp = fopen("php://output", "w");
foreach($result as $row) {
fputcsv($fp, (array) $row));
}
fclose($fp);
drupal_exit();
您可以使用fputcsv获得正确转义的csv
$fp = fopen("php://output", "w");
foreach($result as $row) {
fputcsv($fp, (array) $row));
}
fclose($fp);
drupal_exit();
csv文件中有一个双引号限定符,用于覆盖包含逗号的字符串,如行“Some Name,MD”。如果您要将其导入任何使用双引号限定符读取标准格式的文件,您可以确保输出的周围始终有双引号。csv文件中有一个双引号限定符,用于覆盖包含逗号的字符串,如行“Some Name,MD”。如果要将其导入到任何使用双引号限定符读取标准格式的文件中,您只需确保输出中始终包含双引号。是的,我们也处理类似的问题-使用dbl引号括起来是解决问题的方法,也是正确的csv格式。是的,我们处理了一个类似的问题——用dbl引号括起来既是解决问题的方法,也是正确的csv格式。