我正在为使用 Codeigniter 构建的自定义 CMS 编写标签系统,并且正在尝试强制执行特定格式。
基本上,我需要将每个单词的第一个字母大写,但以下内容除外,应为小写:
- 文章:一个,一个,的
- 并列连词:and、but、or、for、nor 等。
- 介词(少于五个字母):with、on、at、to、from、by 等。
此外,如果标签以上述之一开头,则应大写。
格式正确的标签的一些示例:
- 权力的游戏
- 人鼠之间
- 从头到尾
- 指环王
- 极品飞车
到目前为止,我只有:
$tag = 'Lord of the Rings';
$tag = ucwords($tag);
$patterns = array('/A/', '/An/', '/The/', '/And/', '/Of/', '/But/', '/Or/', '/For/', '/Nor/', '/With/', '/On/', '/At/', '/To/', '/From/', '/By/' );
$lowercase = array('a', 'an', 'the', 'and', 'of', 'but', 'or', 'for', 'nor', 'with', 'on', 'at', 'to', 'from', 'by' );
$formatted_tag = preg_replace($patterns, $lowercase, $tag);
// capitalize first letter of string
$formatted_tag = ucfirst($formatted_tag);
echo $formatted_tag;
这会产生Lord of the Rings的正确结果,但是如何避免重复数组?当我添加新单词时,将它们匹配起来很乏味。
我确定应该包含一些我缺少的单词,是否有任何现有的函数或类可以使用?