php处理字符串函数 php字符串函数大全( 二 )


mb_eregi 相关的函数和 mb_ereg 其实没有本质上的区别,只是它不区分大小写了,就像 preg 相关函数中我们写正则时的后缀符号 i 一样 。ereg 相关的函数都是不用写反斜杠的,在普通的函数中其实是已经被淘汰了的函数(性能没有 preg 好,语法也有区别),大部分情况下都会直接使用 preg 相关的函数来进行操作 。不过如果是牵涉到多字节相关的问题,在 mb_ 函数库中还是只有 ereg 这类的函数可以使用 。
字符串编码转换就像我们之前学习过的 iconv() 函数一样,mb_ 库中也提供了字符编码转换的函数 。
$phone = file_get_contents('https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13888888888');print_r($phone);// __GetZoneResult_ = {//mts:'1388888',//province:'????',//catName:'?й????',//telString:'13888888888',//areaVid:'30515',//ispVid:'3236139',//carrier:'???????'// }var_dump(mb_convert_encoding($phone, 'UTF-8', "GBK"));// string(183) "__GetZoneResult_ = {//mts:'1388888',//province:'云南',//catName:'中国移动',//telString:'13888888888',//areaVid:'30515',//ispVid:'3236139',//carrier:'云南移动'// }// "echo mb_detect_encoding($phone, 'UTF-8,GBK'), PHP_EOL; // CP936同样我们还是拿这个获取手机号信息的公共接口测试,它返回的内容是 GBK 的编码内容 。我们可以通过 mb_convert_encoding() 来转换它的编码内容 。mb_detect_encoding() 是检测编码格式,这里我们给了两个参数,它会返回符合条件的编码内容,CP936 就是 GBK 的另一种表示(IBM在制作 code page 时将 GBK 编码放在了第 936 页) 。
HTTP 参数操作mb_internal_encoding("UTF-8");首先介绍一个 mb_internal_encoding() 函数,其实就是设置当前运行环境中的默认编码规则的,如果不设置的话,就是以当前这个 php 文件的编码规则为默认的 。大家了解一下,因为它会影响我们后面介绍的内容 。
// // localhost:9991/?a=我上var_dump(mb_http_input('GPC')); // bool(false)var_dump(mb_http_output()); // string(5) "UTF-8"mb_internal_encoding("CP936");mb_parse_str($_SERVER['QUERY_STRING'], $result);print_r($result);// Array// (//[a] => 我上// )首先我们运行起来测试文件,然后用浏览器请求这个链接地址 。mb_http_input() 是检测 HTTP 输入字符编码,不过我测试的结果都是返回 false。有了解的小伙伴可以留言说明下这个是什么情况 。而 mb_http_output 则是设置检测输出的编码,这个就会受到 mb_internal_encoding() 所定义的内容的影响 。
另外,mb_parse_str() 是 parse_str() 函数的多字节版,我们可以将浏览器的默认编码转换成 GBK 或者 之后再来请求,因为我们设置当前的 mb_internal_encoding() 为 CP936 了 。在默认情况下,如果使用 UTF-8 的浏览器请求的话,这里就会报错了,这就是 mb_internal_encoding() 对这些函数的影响 。
其它属性查看最后,我们再来看看一些 mb_ 相关信息属性的内容 。
var_dump(mb_language());// string(7) "neutral"mb_language() 函数用于获取/设置当前的语言,它可以接收一个参数设置当前的语言信息 。主要用于编码邮件信息 mb_send_mail() 函数就是使用它来对邮件进行编码 。关于 mb_send_mail() 的使用大家可以自己尝试一下,其实也是 send_mail() 函数的多字节版 。neutral 的意思是中立的,其实也是跟我们的 mb_internal_encoding() 有关 。
var_dump(mb_list_encodings());// array(86) {//[0]=>//string(4) "pass"//[1]=>//string(5) "wchar"//[2]=>//string(7) "byte2be"//[3]=>//……//[65]=>//string(5) "CP936"//……mb_list_encodings() 用于展示当前系统中所支持的所有语言编码的列表,在这个列表中我们就可以看到 CP936 的身影,但是没有 GBK 哦,记住它们俩是一个东西就好了 。
var_dump(mb_get_info());// array(14) {//["internal_encoding"]=>//string(5) "UTF-8"//["http_output"]=>//string(5) "UTF-8"//["http_output_conv_mimetypes"]=>//string(31) "^(text/|application/xhtml\+xml)"//["func_overload"]=>//int(0)//["func_overload_list"]=>//string(11) "no overload"//["mail_charset"]=>//string(5) "UTF-8"//["mail_header_encoding"]=>//string(6) "BASE64"//["mail_body_encoding"]=>//string(6) "BASE64"//["illegal_chars"]=>//int(0)//["encoding_translation"]=>//string(3) "Off"//["language"]=>//string(7) "neutral"//["detect_order"]=>//array(2) {//[0]=>//string(5) "ASCII"//[1]=>//string(5) "UTF-8"//}//["substitute_character"]=>//int(63)//["strict_detection"]=>//string(3) "Off"//}mb_get_info() 是查看当前环境下默认的这些语言编码的配置,比如我们熟悉的 internal_encoding 、 http_output 属性都能在这里看到 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: