1

我有一个这样的CSV。

john,joy, anna, Lucy Bravo,boy

我想删除 ',' 之后的空格(如果存在)。并且如果它已经不是大写,也将','之后的第一个字母设为大写字母。那应该是这样的:

John,Joy,Anna,Lucy Bravo,Boy

只有 ',' 之后的空格应该去。我自己试过。但都失败了。我希望 PHP 可以解决这个问题。

4

3 回答 3

3

您可以使用正则表达式,但将其拆分为一个数组并对每个条目进行操作可能是最简单的:

function fix_entry($str) {
    return ucfirst(ltrim($str));
}

$str = 'john,joy, anna, Lucy bravo,boy';
$fixed = implode(',', array_map(fix_entry, explode(',', $str)));

如果你反对创建一个函数,你可以只使用两个array_maps,但这取决于你

于 2010-06-30T17:41:53.967 回答
2

使用 str_getcsv 将行分成一个数组。循环数组并对每个值使用 trim() 或 ltrim() 和 ucfirst()。

http://us.php.net/manual/en/function.str-getcsv.php

http://us.php.net/manual/en/function.trim.php

http://us.php.net/manual/en/function.ltrim.php

http://us.php.net/manual/en/function.ucfirst.php

于 2010-06-30T17:42:08.497 回答
2

使用trim()ucfirst()

这是文档中的一个修改示例:

$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo ucfirst(trim($data[$c])) . "<br />\n";
        }
    }
    fclose($handle);
}
于 2010-06-30T17:43:45.477 回答