使用3个字符或更少字符串的字符串中的所有单词完全大写

时间:2011-02-12 08:58:38

标签: php

我试图完成以下任务:

$string = "i want to convert this string to the following";

并将其转换为以下内容:

echo $string;
// I Want TO Convert This String TO THE Following

因此: 将字符串中的所有单词的首字母大写 如果一个单词是3个字符或更少,则在字符串中使整个单词大写。 怎么用PHP做不了?

2 个答案:

答案 0 :(得分:4)

快速方式(使用正则表达式):

$new_string = preg_replace_callback('/\b\w{1,3}\b/', function($matches){
   return strtoupper($matches[0]);
}, $string);

修改

没看到你想要其余的。这应该这样做:

$new_string = ucwords($new_string);

您也可以将它们组合在一起。 :)

答案 1 :(得分:3)

你可以爆炸()你的字符串并循环它以检查长度:

$array = explode(' ', $string);
foreach($array as $k => $v) {
    if(strlen($v) <= 3) {
        $array[$k] = strtoupper($v); //completely upper case
    }
    else {
        $array[$k] = ucfirst($v); //only first character upper case
    }
}
$string = implode(' ', $array);