一尘不染

如何将句子中第一个单词的首字母大写?

php

我正在尝试编写一个函数来清理用户输入。

我不是要使其完美。我宁愿用小写字母表示一些名称和缩写,也不愿用大写字母表示完整的段落。

我认为该函数应使用正则表达式,但是我对这些表达式很不好,需要一些帮助。

如果以下表达式后跟一个字母,我想将该字母大写。

 "."
 ". " (followed by a space)
 "!"
 "! " (followed by a space)
 "?"
 "? " (followed by a space)

更好的是,该函数可以在“。”,“!”之后添加一个空格。和“?” 如果这些后面跟有一封信。

如何做到这一点?


阅读 401

收藏
2020-05-29

共1个答案

一尘不染

$output = preg_replace('/([.!?])\s*(\w)/e', "strtoupper('\\1 \\2')", ucfirst(strtolower($input)));

由于PHP 5.5.0中不推荐使用修饰符 e

$output = preg_replace_callback('/([.!?])\s*(\w)/', function ($matches) {
    return strtoupper($matches[1] . ' ' . $matches[2]);
}, ucfirst(strtolower($input)));
2020-05-29