我是新手,这对我来说很难。
我在变量中有一个文本:
$bio = 'text, text, tex ...';
我可以使用 ucfirst php 函数使文本中的单词以大写字母开头。
问题是我不希望带有一个、两个或三个字母的单词大写,因为它看起来不专业。
重要提示:但我也想保持字母"I"大写,因为它是正确的英语语法。
所以像这样的文本:这是一个没有UCSfirst函数的文本,我认为它需要一些大写
看起来像:这是一个没有 ucfirst 函数的文本,我认为它需要一些大写
有什么想法吗?
这将大写任何长度为 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);
它将保留任何较短的单词,例如 I
和 add
,并将i
大写。
我会使用正则表达式。如果你不想,你可以使用 split,然后迭代令牌并使用一堆 if-else,但正则表达式更酷。;)
这里有一个非常相似的问题:正则表达式将每个单词的第一个字母大写,也在破折号等特殊字符之后
嗯?
$bio_x = explode(" ",$bio); if(strlen($bio_x[0]) > 3) $bio = ucfirst($bio); $bio = str_replace(" i "," I ",$bio);