PHP删除所有大写

Bri*_*ian 3 php

我使用PHP将表单项插入MySQL数据库。有时,用户使用大写字母输入文本。有什么方法可以更改它,以便仅首字母大写? ucwords(strtolower($word))不会为我工作,因为如果首字母尚未大写,我不想将其首字母大写。

我主要担心的是人们提交姓氏的时间。大多数人都正确提交了该书,但有些人以大写形式提交了它。如果全部使用大写字母,则其功能应与相同ucwords(strtolower($word)),但是如果有人将自己的名字命名为De la Rosa,我就不想将其更改为De La Rosa。

Amb*_*ber 5

<?php

function ucwordsreplace($matches) {
    return ucwords(strtolower($matches[0]));
}

$original = "some UPPERCASE words GO HERE";
$fixed = preg_replace_callback('/\b[A-Z]+\b/', "ucwordsreplace", $original);

echo $fixed; // some Uppercase words Go Here
Run Code Online (Sandbox Code Playgroud)

正则表达式仅匹配完全是大写的单词(任意数量的大写字母,每边都有单词边界),然后将每个单词传递给定义的函数,该函数返回仅首字母大写的替换文本。

如果您还想防止UPPERCA $ E之类的问题,则可以在正则表达式中添加其他符号,甚至可以匹配所有非小写字符(使用[^a-z]代替[A-Z])。