0

我是新手,这对我来说很难。

我在变量中有一个文本:

$bio = 'text, text, tex ...';

我可以使用ucfirst php 函数使文本中的单词以大写字母开头。

问题是我不希望带有一个、两个或三个字母的单词大写,因为它看起来不专业。

重要提示:但我也想保持字母“I”大写,因为它是正确的英语语法。

所以像这样的文本: 这是一个没有 ucfirst 功能的文本,我认为它需要一些大写

看起来像: 这是一个没有 Ucfirst 函数的文本,认为它需要一些大写

有任何想法吗?

4

3 回答 3

3

这将大写任何长度为 4 个或更多字母的单词(英文字母序列):

$bio = preg_replace_callback('/[a-z]{4,}|\bi\b/i', function($match){
    return ucfirst($match[0]);
}, $bio);

对于 5.3 之前的 PHP 版本:

$bio = preg_replace_callback('/[a-z]{4,}|\bi\b/i',
  create_function('$match', 'return ucfirst($match[0]);'), $bio);

它将保留任何较短的单词,例如Iandadd和大写i

于 2012-06-07T00:18:59.283 回答
0

我会使用正则表达式。如果您不想这样做,您可以使用 split,然后遍历标记并使用一堆 if-else,但正则表达式更酷。;)

这里有一个非常相似的问题:Regex capitalize first letter each word, also after a special character like a dash

于 2012-06-07T00:18:50.983 回答
0

嗯嗯?

$bio_x = explode(" ",$bio); if(strlen($bio_x[0]) > 3) $bio = ucfirst($bio); $bio = str_replace(" i "," I ",$bio);
于 2012-06-07T00:22:08.730 回答