我正在尝试编写一个函数来清理用户输入。
我不是要使其完美。我宁愿用小写字母表示一些名称和缩写,也不愿用大写字母表示完整的段落。
我认为该函数应使用正则表达式,但是我对这些表达式很不好,需要一些帮助。
如果以下表达式后跟一个字母,我想将该字母大写。
"." ". " (followed by a space) "!" "! " (followed by a space) "?" "? " (followed by a space)
更好的是,该函数可以在“。”,“!”之后添加一个空格。和“?” 如果这些后面跟有一封信。
如何做到这一点?
$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)));