php关于字串的若干问题(如截取、反转)
来源:互联网 发布:北大出版社《最优化》 编辑:程序博客网 时间:2024/06/06 00:21
在学习面向对象的时候,很经典的一句话就是“一切都是对象”,如果要在字串中套用,那”一切都是字串“这句话也是说得通的。字串的问题很多,什么反转、截取、不同编码不同语言所带来的乱码问题等等。在php中,应该是为我们准备了两套关于字串的操作函数,其中多字节字串函数对于处理类似中文这样的很方便。在php中字串包夹在单引号或双引号之间,二者没有什么根本性的不同,只是在双引号中的变量会被解析,而单引号中的变量不会被解析。因此,强烈建议如果字串中没有变量,用单引号,因为这样更快!
<?phpheader('Content-type=txt/html;charset=utf-8');/*有一个网页地址,如http://www.sina.com.cn/,如何得到它的内容*/function get_url_contents($url){$readcontents = fopen($url,'rb');$contents = stream_get_contents($readcontents);fclose($readcontents);return $contents;}echo get_url_contents('http://www.sina.com.cn/');echo file_get_contents('http://www.sina.com.cn/');/*Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术。1、以<<<End开始标记开始,以End结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。2、开始标记和开始标记相同,比如常用大写的EOT、EOD、EOF来表示,但是不只限于那几个,只要保证开始标记和结束标记不在正文中出现即可。3、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以在heredoc中,变量不需要用连接符.或,来拼接。*/function output_html(){echo <<<EOD<html><head><title>heredoc</title></head><body><p>我是heredoc,是一种很方便的字串输出技术</p></body></html>EOD;}echo output_html().'<br>';/*substr()可以截取字串,strrev()可以翻转字串,但中文会出现乱码。与多字节字串函数相比,可以称这样的函数为单字节字串函数,顾名思义就是以一个字节为单位处理字串。我们知道,在很多编码中中文都不会是单字节,如gbk中占2字节,utf-8中占3字节,更有在unicode编码体系中,很多占4字节甚至5字节。所以用单字节字串函数处理多字节的中文不出错才怪。乱码处理一般方法如下:1、文档编写保存时和处理时采用一样的编码,web中一般用utf-82、字串处理中应当采用多字节处理函数,当然用单字节处理函数也是可行的,只是有时候会比较麻烦3、在字串处理前,先判断其编码,再相应处理。当然我们可以先判断是不是utf-8编码,不是我们再转换成utf-8之后在统一处理,其他编码类似。mb_detect_encoding — 检测字符的编码,据说该函数不太准,慎用mb_check_encoding — 检查字符串在指定的编码里是否有效mb_convert_encoding — 转换字符的编码*/function my_strrev1($str){//字串反转if(!is_string($str))//不是字串,退出exit('不是字串');if(!mb_check_encoding($str,'UTF-8')){//不是utf-8编码,转换$str = mb_convert_encoding($str,'utf-8');}$array=array();//将字符串存入数组$l=mb_strlen($str,'UTF-8');for($i=0;$i<$l;$i++){$array[]=mb_substr($str,$i,1,'UTF-8');}krsort($array);//反转字符串$string=implode($array);//拼接字符串return $string;}function my_strrev2($str){//字串反转if(!is_string($str))//不是字串,退出return false;if(!mb_check_encoding($str,'UTF-8')){//不是utf-8编码,转换$str = mb_convert_encoding($str,'utf-8');}$ret='';for($i=0;$i<mb_strlen($str);$i++){$ret = mb_substr($str,$i,1,'utf-8').$ret;}return $ret;}function my_substr($str,$from,$len){//字串截取if ($from>=0 && $len<=mb_strlen($str,'utf-8')-$from+1)return mb_substr($str,$from,$len,'utf-8');return false;}$str='我是php,我能翻转';echo my_strrev1($str).'<br>';echo my_strrev2($str).'<br>';echo my_substr($str,7,1).'<br>';/*产生指定长度的随机字串mt_rand()--生成更好的随机数,比rand()快4倍且自动播种,也可以播种mt_srand(time());*/function get_random_str($len){$pattern = '0123456789qbcdefghijklmnopqrsuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';$ret = '';mt_srand(time());for($i=0;$i<$len;$i++){$ret .=$pattern[mt_rand(0,61)];}return $ret;} echo get_random_str(8).'<br>';?>
0 0
- php关于字串的若干问题(如截取、反转)
- 关于php.ini的若干问题小结
- 截取字串的一部分
- PHP实现中文字串截取无乱码的方法
- 实现中文字串截取无乱码的方法php
- PHP实现中文字串截取无乱码的方法
- php 实现中文字串截取无乱码的方法
- PHP实现中文字串截取无乱码的方法…
- php实现中文字串截取无乱码的方法
- awk截取字串的方法
- PHP实现中文字串截取无乱码
- 关于wampsever的若干问题(一)
- 关于Winpcap的若干问题
- 关于DLL的若干问题
- 关于DES的若干问题:
- 关于fusionchart的若干问题
- 关于aotutrace 的若干问题
- 关于ARM的若干问题
- JDBC进化史---从JDBC1.0到JDBC4.2
- Android组件Broadcast Receiver学习
- HBase与MapReduce集成3-HBase2RDBMS
- MTK+Android编译
- H5+CSS工具
- php关于字串的若干问题(如截取、反转)
- 浅谈cin与cout
- IOS Xcode 插件
- 使用七牛云存储在网站中进行图片外链
- WP8.1&Win10幸运大转盘源码分享
- c++第一个例子
- 关于JVM个人浅谈(一)
- Js添加到HTML
- 在手机上外网的方法