如何让ucwords忽略所有大写字母?

时间:2013-12-28 04:49:27

标签: php

我有一些文字,我需要每个首字母大写。但是有些词是全部大写的,我希望忽略这些词。

$foo = 'product manufacturer for CAMERON TRAILERS';
$foo = ucwords($foo); 

我需要输出如下:

Product Manufacturer For CAMERON TRAILERS.

这可能吗?

2 个答案:

答案 0 :(得分:1)

第二个想法,因为ucfirstucwords都不会将大写字符转换为小写字母;对于这种情况,ucwords应该没问题。我已经更改了下面的功能,因此它会使更具规范性,这取决于你如何解释问题。


您需要定义自己的功能才能执行此操作; PHP在其标准库中没有此行为的功能(参见上面的注释)。

// Let's create a function, so we can reuse the logic
function sentence_case($str){
    // Let's split our string into an array of words
    $words = explode(' ', $str);
    foreach($words as &$word){
        // Let's check if the word is uppercase; if so, ignore it
        if($word == strtoupper($word)){
            continue;
        }
        // Otherwise, let's make the first character uppercase
        $word = ucfirst(strtolower($word));
    }
    // Join the individual words back into a string
    return implode(' ', $words);
}

echo sentence_case('product manufacturer for CAMERON TRAILERS');
// "Product Manufacturer For CAMERON TRAILERS"

答案 1 :(得分:0)

在您期望这样的Product Manufacturer For Cameron Trailers

时使用此代码
$foo = 'product manufacturer for CAMERON TRAILERS';
echo $foo = ucwords(strtolower($foo));

请看http://www.php.net/manual/pt_BR/function.ucwords.php。 ucwords不能翻译高级单词

<?php
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World!

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>