标签:php
我使用PHP将表单项插入MySQL数据库.有时,用户使用大写字母输入文本.有什么方法可以更改它,以便仅首字母大写? ucwords(strtolower($word))对我不起作用,因为如果首字母尚未大写,我不想对其首字母大写.
我主要担心的是人们提交姓氏的时间.大多数人都正确提交了该书,但有些人以大写形式提交了它.如果全部用大写字母,它应该与ucwords(strtolower($word))一样工作,但是如果有人将自己的名字命名为De la Rosa,我不想将其更改为De La Rosa.
解决方法:
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
正则表达式仅匹配完全是大写的单词(任意数量的大写字母,每边带有单词边界),然后将每个单词传递给定义的函数,该函数返回仅首字母大写的替换文本.
如果还想防止UPPERCA $E之类的问题,则可以在正则表达式中添加其他符号,甚至可以匹配所有非小写字符(使用[^ a-z]而不是[A-Z]).
标签:php
来源: https://codeday.me/bug/20191106/2001163.html