【发布时间】:2013-04-27 11:37:02
【问题描述】:
我有几种方法可以将 php 数组从 stackoverflow 和 google 转换为 csv 字符串。但是我很麻烦,如果我想存储诸如 01727499452 之类的手机号码,它会保存为没有第一个 0 值。 我目前正在使用这段代码: Convert array into csv
谁能帮帮我。
Array
[1] => Array
(
[0] => Lalu ' " ; \\ Kumar
[1] => Mondal
[2] => 01934298345
[3] =>
)
[2] => Array
(
[0] => Pritom
[1] => Kumar Mondal
[2] => 01727499452
[3] => Bit Mascot
)
[3] => Array
(
[0] => Pritom
[1] => Kumar Mondal
[2] => 01711511149
[3] =>
)
[4] => Array
(
[0] => Raaz
[1] => Mukherzee
[2] => 01911224589
[3] => Khulna University 06
)
)
我的代码块:
function arrayToCsv( array $fields, $delimiter = ';', $enclosure = '"', $encloseAll = false, $nullToMysqlNull = false ) {
$delimiter_esc = preg_quote($delimiter, '/');
$enclosure_esc = preg_quote($enclosure, '/');
$outputString = "";
foreach($fields as $tempFields) {
$output = array();
foreach ( $tempFields as $field ) {
if ($field === null && $nullToMysqlNull) {
$output[] = 'NULL';
continue;
}
// Enclose fields containing $delimiter, $enclosure or whitespace
if ( $encloseAll || preg_match( "/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field ) ) {
$field = $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure;
}
$output[] = $field." ";
}
$outputString .= implode( $delimiter, $output )."\r\n";
}
return $outputString; }
谢谢,
Pritom。
【问题讨论】:
-
这就是用别人轮子的问题。
-
将其保存为字符串。无论如何,我建议将其用于电话号码,因为您也只想保存该 + ;)
-
您应该使用 PHP 的内置 CSV 函数,例如 php.net/manual/en/function.fputcsv.php
-
一些二手建议:如果您不打算对其进行算术运算,请将其存储为字符串。 The Daily WTF 包含许多以科学记数法打印的电话号码的示例,这些电话号码最终源于有人将其存储为整数。
-
数字将正确存储在 CSV 中,前导零;但是当在 MS Excel 中打开时,Excel 将重新格式化它 - 要么使用已经支持格式信息的文件格式(不是 CSV),以便 Excel 不应用其标准行为,要么在保存 @987654326 时将其强制为公式字符串@
标签: php csv multidimensional-array phone-number