我有一个这样的CSV。
john,joy, anna, Lucy Bravo,boy
我想删除 ',' 之后的空格(如果存在)。并且如果它已经不是大写,也将','之后的第一个字母设为大写字母。那应该是这样的:
John,Joy,Anna,Lucy Bravo,Boy
只有 ',' 之后的空格应该去。我自己试过。但都失败了。我希望 PHP 可以解决这个问题。
我有一个这样的CSV。
john,joy, anna, Lucy Bravo,boy
我想删除 ',' 之后的空格(如果存在)。并且如果它已经不是大写,也将','之后的第一个字母设为大写字母。那应该是这样的:
John,Joy,Anna,Lucy Bravo,Boy
只有 ',' 之后的空格应该去。我自己试过。但都失败了。我希望 PHP 可以解决这个问题。
您可以使用正则表达式,但将其拆分为一个数组并对每个条目进行操作可能是最简单的:
function fix_entry($str) {
return ucfirst(ltrim($str));
}
$str = 'john,joy, anna, Lucy bravo,boy';
$fixed = implode(',', array_map(fix_entry, explode(',', $str)));
如果你反对创建一个函数,你可以只使用两个array_map
s,但这取决于你
使用 str_getcsv 将行分成一个数组。循环数组并对每个值使用 trim() 或 ltrim() 和 ucfirst()。
http://us.php.net/manual/en/function.str-getcsv.php
http://us.php.net/manual/en/function.trim.php
这是文档中的一个修改示例:
$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);
}