【问题标题】:How can I use php function mb_convert_case and convert only certain words to upper?如何使用 php 函数 mb_convert_case 并仅将某些单词转换为大写?
【发布时间】:2016-02-11 21:29:31
【问题描述】:

我想传递这个输入

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

预期结果:

AL & JRL 商务中心是最好的

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

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

【问题讨论】:

  • 如果您想提供帮助,您应该告诉我们您想要转换和不想要转换的单词的标准。
  • 解开字符串,只传递你想要影响的部分。

标签: php string uppercase toupper mb-convert-encoding


【解决方案1】:

所以我认为您只是希望忽略潜在的首字母缩写词,对吗?嗯,有几个想法。首先,您可以编写一个忽略任何包含 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()。随意使用任何你想要的东西。我相信您已经知道其中的区别,但请查看:

Best function for Title capitlization?

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

最后的想法

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

希望对您有所帮助,祝您好运!

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 2019-06-15
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多