注:作者说的应用场景只是举例说明,不代表只有这么一种解决问题的方案,也不代表是最优解,只是讲解这个函数的一个案例而已。
第2例
string strtolower ( string $string )
string strtoupper ( string $string )
string ucfirst ( string $str )
string lcfirst ( string $str )
string ucwords ( string $str [, string $delimiters = "\t\r\n\f\v" ] )
应用场景
拿strtolower举例,验证码是我们大家都遇到过的场景,不知大家有没有注意到验证码后面经常会提示一句忽略大小写,这个时候我们通常把用户提交过来的字符与session中已经存储的字符统一转换成大写或者小写再来统一比较。
函数解释
strtolower ( string $string ) - 将字符串转化为小写
strtoupper ( string $string ) - 将字符串转化为大写
ucfirst ( string $str ) - 将字符串的首字母转换为大写
lcfirst ( string $str ) - 将字符串的首字母转换为小写
ucwords ( string $str ) - 将字符串中每个单词的首字母转换为大写
其实对于这几个函数没有太多要细说的地方,作者只是把经常用到的处理大小写的几个函数拿出来做个归纳,这里需要注意的地方就是ucwords的分隔符,作者在下面代码中会单独拿出来示例一下。
有些朋友可能还见到过
string mb_strtolower ( string $str [, string $encoding = mb_internal_encoding()])
这个函数以及mb_strtoupper,这两个函数和去掉mb_前缀的两个转换大小写函数是非常相似的,但是官方文档指出,这两个带前缀的函数的执行效率相比较来说是不理想的,$encoding 这个参数为字符编码,还有就是如果你的php mb_string扩展没有打开,使用带前缀的这两个函数会出现致命级错误,也就是Fatal error: Call to undefined function: mb_strtolower(),因此作者认为这两个函数可以知道就好。
还有一个函数作为了解作者也顺嘴提一句,那就是string mb_convert_case ( string $str , int $mode [, string $encoding = mb_internal_encoding() ] )
这个函数同样可以转换字符的大写或者小写,这里的$mode是一个常量,它可以指定为 MB_CASE_UPPER(大写)、 MB_CASE_LOWER(小写) 和 MB_CASE_TITLE(首字母开头大写) 的其中一个。
我们来写几行代码,演示一下:
<?php
$example_string = 'today is a good day.';
// 全部转换成大写
$upper_string = strtoupper($example_string);
echo $upper_string . "\r\n";
// 使用mb_convert_case的MB_CASE_UPPER来转换成大写
$upper_string_rare = mb_convert_case($example_string, MB_CASE_UPPER);
echo $upper_string_rare . "\r\n";
// 返回值:TODAY IS A GOOD DAY.
// 全部转换成小写
$lower_string = strtolower($upper_string);
echo $lower_string . "\r\n";
// 使用mb_convert_case的MB_CASE_LOWER来转换成小写
$lower_string_rare = mb_convert_case($upper_string, MB_CASE_LOWER);
echo $lower_string_rare . "\r\n";
// 返回值:today is a good day.
// 转换成字符串首字母开头大写
$ucfirst_string = ucfirst($lower_string);
echo $ucfirst_string . "\r\n";
// 返回值:Today is a good day.
// 转换成字符串首字母开头小写
$lcfirst_string = lcfirst($ucfirst_string);
echo $lcfirst_string . "\r\n";
// 返回值:today is a good day.
// 将字符串中每个单词的首字母转换为大写
$ucwords_string = ucwords($lcfirst_string);
echo $ucwords_string . "\r\n";
// 使用mb_convert_case的MB_CASE_TITLE来将字符串中每个单词的首字母转换为大写
$ucwords_string_rare = mb_convert_case($upper_string, MB_CASE_TITLE);
echo $ucwords_string_rare . "\r\n";
// 返回值:Today Is A Good Day.
附加编程
作者喜欢逛一逛segmentfault社区,有一次无意中看到了一个兄弟提出了一个需求,是关于字符串方面的,内容如下:
PHP如何将字符串中带有“-”的地方去掉“-”,并将后面紧跟的字母转换为大写?
如
“ask-simple”转换为“askSimple”
“ask-simple-answer”转换为“askSimpleAnswer
有兴趣的朋友可以先自己动手来解决一下这个问题,当时这条评论下面有朋友用正则表达式巧妙的解决了这个问题,在这里我们主要使用字符串转换函数。
<?php
$example_string = 'ask-simple-answer';
// 1. 直接把每个单词首字母都转换成大写
echo ucwords($example_string, '-') . "\r\n";
// 2. 去掉连字符-
echo str_replace('-', '', ucwords($example_string, '-')) . "\r\n";
// 3. 将首字符转换成小写
echo lcfirst(str_replace('-', '', ucwords($example_string, '-'))) . "\r\n";
// 返回值:askSimpleAnswer