我使用PHP将表单条目插入MySQL数据库。有时用户输入全部大写字母。有什么方法可以改变它,只有首字母大写? ucwords(strtolower($word))
不适合我,因为如果它没有被大写,我不想将第一个字母大写。PHP删除全部大写
我主要关心的是人们提交姓时。大多数人正确地提交它,但有些提交全部大写。如果它全部大写,它应该与ucwords(strtolower($word))
一样工作,但如果有人提交他们的名字为De la Rosa,我不希望它更改为De La Rosa。
我使用PHP将表单条目插入MySQL数据库。有时用户输入全部大写字母。有什么方法可以改变它,只有首字母大写? ucwords(strtolower($word))
不适合我,因为如果它没有被大写,我不想将第一个字母大写。PHP删除全部大写
我主要关心的是人们提交姓时。大多数人正确地提交它,但有些提交全部大写。如果它全部大写,它应该与ucwords(strtolower($word))
一样工作,但如果有人提交他们的名字为De la Rosa,我不希望它更改为De La Rosa。
<?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
正则表达式匹配仅是完全大写(任何数量的在每一侧一个字边界大写字母),然后通过每个这些所定义的函数,该函数返回一个替代文本仅与第一话字母大写。
如果你想要防止像UPPERCA $ E这样的事情,那么你可以添加其他符号的正则表达式,甚至只匹配所有非小写字符(使用[^a-z]
而不是[A-Z]
)。
我想你表示的功能是正确的..
但是,什么是您的具体要求..
在示例以下为ucwords
<?php
$foo = 'hello world!';
$foo = ucwords($foo); // Hello World!
$bar = 'HELLO WORLD!';
$bar = ucwords($bar); // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>
否则,如果u想的使用只有第一个是大写字母,而不是字符串 的每个第一个字符都是大写,然后尝试ucfirst()函数。
之前,我张贴布赖恩更新的问题和DAV回答了这个问题! – Vijay 2010-02-24 05:24:43
怎么样时,它应该是大写的例子,当它不应该是 – Jayrox 2010-02-24 05:05:30