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)));

関数を作成することに反対する場合は、 を 2 つだけ使用できますがarray_map、それはあなた次第です

于 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 に答える