如何使用 php 函数mb_convert_case并仅将某些单词转换为上部


How can I use php function mb_convert_case and convert only certain words to upper?

我想传递这个输入

$string = "AL & JRL buSineSS CENTRE is the best";

预期成果:

AL&JRL商务中心是最好的

我已经尝试了下面的代码,但它转换了所有内容。

mb_convert_case($string, MB_CASE_TITLE, "UTF-8");

所以我认为你只是想忽略潜在的首字母缩略词,对吗?嗯,有一些想法。首先,您可以制作一个脚本,忽略包含 3 个或更少字母的任何内容。在我看来,这不是一个很好的解决方案。"它"、"那个"等呢?第二种是使用已知单词的字典来运行ucwords()。哎呀 - 对于这样一个看似简单的任务来说,这将是非常繁重的负担!

我建议简单地忽略任何全大写的内容。这样,无论首字母缩略词是什么(或长度(,它都会忽略它。这样的事情可能就足够了:

$phrase = "Hello this is a TeSt pHrAse, to be tested ASAP. Thanks.";
$chunks = explode(" ", $phrase);
$result = "";
foreach($chunks as $chunk){
    if(!ctype_upper($chunk)) {
        $result .= ucwords($chunk) . " ";
    } else {
        $result .= $chunk . " ";
    }
}
$result = rtrim($result);

结果:

Hello This Is A Test Phrase, To Be Tested ASAP. Thanks.

这不是最优雅的解决方案,这只是我在阅读您的问题后一直在思考的问题。但是,如果您知道您的首字母缩略词大写,这将完全跳过它们,只将您的实际单词标题大小写。

警告

上面提供的示例不适用于通过破折号、下划线等连接到单词的首字母缩略词。这仅适用于间距。您可以轻松地根据需要调整上述内容,并使其更加智能。但是,我想非常清楚,这可能无法满足所有需求!

此外,此示例将出现在您的示例短语中。不幸的是,除非您使用字典或计算字符串长度,否则这是您获得的最接近的。此解决方案对于大量功能来说工作量最小。当然,带有比较功能的词典会很好用(无论是首字母缩略词词还是单词词典,无论哪种方式( - 但即便如此,也很难保持最新状态。名称将抛弃可以安全地更改为标题大小写的单词字典。不太常用的首字母缩略词肯定不会出现在首字母缩略词词典中。不幸的是,所有解决方案都有无穷无尽的警告。选择最适合您的。

希望这有帮助。如果您有任何其他问题,请发表评论,我会尽力提供帮助。

随机性

最后一件事。我用了ucwords().随意使用任何你想要的东西。我相信你已经知道其中的区别,但看看这个:

标题投降的最佳功能?

确切地知道哪种工具最适合这项工作总是很高兴。同样,我相信您知道自己的需求,并且您选择了正确的工具。只是认为这是一个有趣的读物,可以帮助任何偶然发现这一点的人。

结语

您可以使用上述示例的组合来自定义定制您自己的解决方案。通常,组合方法非常令人满意,从而减少了每种方法的缺点。

希望这有帮助,祝你好运!