我有一个csv文件:
software
hardware
educational
games
languages
.
.
.
我需要一个新的csv文件:
software;hardware;educational;games;languages;....
我该怎么做?
我在做:
<?php
$one = file_get_contents('one.csv');
$patterns =" /\\n/";
$replacements = ";";
$newone = preg_replace($patterns, $replacements, $one);
echo $newone;
file_put_contents('newone.csv', $newone );
?>
这会在行尾添加分号,但换行符仍然存在
答案 0 :(得分:1)
以下是如何执行此操作的方法。 编辑:测试过,工作正确。
<?php
$row = 1;
$readHandle = fopen("in.csv", "r"); // open the csv file
$writeHandle = fopen("out.csv","w");
$subArr = array();
while (($data = fgetcsv($readHandle, 1000, "\n")) !== FALSE) {
$myStr = $data[0]; // this stores the zeroth column of each CSV row
$subArr[] = $myStr; // subArr contains all your words
}
fputcsv($writeHandle,$subArr,";"); // it creates a CSV with single line seperated by ;
fclose($readHandle);
fclose($writeHandle);
?>
答案 1 :(得分:1)
令人惊讶的是,没有人提到file()
返回他需要的内容:
$cont = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
file_put_contents('somefile.csv',implode(';',$cont));
2行代码,不使用慢速正则表达式
如果您需要更少的代码,这里有1行代码,我喜欢的方式!
file_put_contents(
'somefile.csv',
implode(
';',
file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)
)
);
答案 2 :(得分:0)
我猜你可以得到一个preg_match_all()
来将每个字母数字用引号括起来放入数组中。
然后你只需循环该数组并显示它们添加分号。
答案 3 :(得分:0)
作为一次性,我会跑回妈妈...
perl -p -i -e 's|(.*)\n|$1;|m' one.cvs
答案 4 :(得分:0)
您的档案可能有回车。试试这个:
$newone = str_replace("\r\n", ';', $one);
答案 5 :(得分:0)
涵盖所有可能性:
<?php
$file = 'data.csv';
file_put_contents($file, '"software"
"hardware"
"educational"
"games"
"languages"
');
$input_lines = file($file);
$output_columns = array();
foreach($input_lines as $line){
$line = trim($line); // Remove trailing new line
$line = substr($line, 1); // Remove leading quote
$line = substr($line, 0, -1); // Remove trailing quote
$output_columns[] = $line;
}
echo implode(';', $output_columns);
注意:此代码假定输入文件中没有错误。总是添加一些验证。
答案 6 :(得分:0)
我建议这样做:
<?php
$one = file_get_contents('one.csv');
$patterns ="/\\r?\\n/";
$replacements = ";";
$newone = preg_replace($patterns, $replacements, $one);
echo $newone;
file_put_contents('newone.csv', $newone );
?