我找到了这个问题的一个例子,但无法正确实现(仍然是相同的结果或没有结果)
我有一个代码,它读取一个csv文件,其行如下所示:
Hans,Ueli,Firma,Rang,00419999999,062 123 45 678,+4179 408 88 20
现在我想更正这些数字并将它们全部放在一个特定的格式中。
我用这段代码实现了这个目的:
<?php
//Korrigiere telnummern in csv
if (($handle = fopen("directory.txt", "rw")) !== FALSE) {
$row=0; $csv_row = array();
while (($csv_data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$csv_row[] = $csv_data;
$replace = array("+41", "0041");
$correct = str_replace($replace, "0", $csv_data);
$correct = str_replace("+", "00", $correct);
$corrected = str_replace(" ", "", $correct);
}
fclose($handle);
}
var_dump($corrected);
?>
[你能告诉我为什么我var_dump($csv_data)
得到一个布尔答案?]
我现在的问题是,它只占用csv文件的第一行
如何使用此str_replace
组合检查每一行?
之后我想覆盖旧的结果。 (但我想我可以自己做这个)
非常感谢你的时间和帮助。
编辑:
var_dump($csv_row);
会给我:
array(2) {
[0]=>
array(7) {
[0]=>
string(7) "Vorname"
[1]=>
string(8) "Nachname"
[2]=>
string(5) "Firma"
[3]=>
string(4) "Rang"
[4]=>
string(10) "0612345678"
[5]=>
string(14) "062 123 45 678"
[6]=>
string(12) "+41793057148"
}
[1]=>
array(7) {
[0]=>
string(4) "Hans"
[1]=>
string(4) "Ueli"
[2]=>
string(5) "Firma"
[3]=>
string(4) "Rang"
[4]=>
string(11) "00419999999"
[5]=>
string(14) "062 123 45 678"
[6]=>
string(4) "0900"
}
}
答案 0 :(得分:0)
我没有得到var_dump($csv_data)
的任何布尔值。还尝试在while循环中转储$corrected
变量以处理已处理的行。
<?php
//Korrigiere telnummern in csv
if (($handle = fopen("directory.txt", "rw")) !== FALSE) {
$row=0; $csv_row = array();
while (($csv_data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$csv_row[] = $csv_data;
$replace = array("+41", "0041");
$correct = str_replace($replace, "0", $csv_data);
$correct = str_replace("+", "00", $correct);
$corrected = str_replace(" ", "", $correct);
var_dump($csv_data);
var_dump($corrected);
}
fclose($handle);
}
?>