【问题标题】:mb_convert_case() treats non-breaking space as part of the wordmb_convert_case() 将不间断空格视为单词的一部分
【发布时间】:2018-07-16 13:55:40
【问题描述】:

我需要将一系列以逗号分隔的单词转换为标题大小写。当我尝试转换如下字符串时会出现问题:

foobar, 2 foo
3 bar

当我在这些上使用 mb_convert_case($foobar, MB_CASE_TITLE) 时,它们看起来像这样:

Foobar, 2 foo
3 bar

代替:

Foobar, 2 Foo
3 Bar

有没有办法在保留不间断空格的同时对这些字符串进行标题大小写?

【问题讨论】:

  • 这并不奇怪。为什么你的 PHP 字符串中有一个 HTML 实体?仅在将它们输出到视图时转换为 HTML 实体。
  • Try this: echo mb_convert_case(html_entity_decode($foobar), MB_CASE_TITLE);
  • @Devon,我在准备输出的函数中有这个。
  • @AntonsKijaņica 没关系。你应该在转换为实体之前调用 mb_convert_case。
  • @Devon,当然,我可能做错了。我对 MVC 概念不是很熟悉,而且我还没有准备好采用它。我需要在一个非常具体的地方有一个不间断的空间——即代替“\d foobar”中的空间。感谢您的建议。

标签: php capitalization


【解决方案1】:

您需要将  替换为空格,然后将所有单词大写,如下所示:

$string = 'foobar, 2 foo 3 bar';
$string = preg_replace("/\s| /",' ', $string);
$output = ucwords($string); 

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2011-02-05
    • 2022-07-29
    • 2018-06-09
    • 2015-03-11
    相关资源
    最近更新 更多