php转换成分号

时间:2011-03-08 12:18:56

标签: php csv

我有一个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 );
?>

这会在行尾添加分号,但换行符仍然存在

7 个答案:

答案 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行代码,不使用慢速正则表达式

OR

如果您需要更少的代码,这里有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 );
?