设为首页 收藏本站
查看: 806|回复: 0

[经验分享] php学习第二章:字符串处理函数(二)字符串查找、替换、截取等

[复制链接]
发表于 2015-8-29 09:22:10 | 显示全部楼层 |阅读模式
  1、字符串比较
  (1)strcmp($str1,$str2)  //比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的字符大于前面的字符)
  



1  /**
2      * strcmp($str1, $str2) 比较两个字符串是否相等
3      * @param string $str1 第一个字符串
4      * @param string $str2 第二个字符串
5      */
6     $str1 = 'hell';
7     $str2 = 'ello';
8     var_dump(strcmp($str1, $str2));  //输出1,因为两个字符串的首字母不同,比较首字母,h的位置在e后面,所以h比e大
  (2)strncmp($str1, $str2, $length); //比较两个字符串截取指定长度的子串



1 /**
2      * strncmp($str, $str2, $len) 比较两个字符串从开头到指定长度的子串
3      * @param string $str1 第一个字符串
4      * @param string $str2 第二个字符串
5      * @param int $len 要截取的开头
6      */
7     $str3 = 'my pleasure!';
8     $str4 = 'my book';
9     var_dump(strncmp($str3, $str4, 2));    //输出0,因为两个字符串截取两个长度都是my
  相关函数strcasecmp()比较两个字符串时不区分大小写,strnatcmp(),strnatcasecmp(),strncasecmp()和上述两个函数相似,而且不是很常用,在此不再赘述
  2、字符串查找
  (1)strstr($str,$need,bool $return_before=false) 查找字符串中从$need开始到结尾的字符串   <=>和strchr 是同义函数



1 /**
2      * strstr($str, $need, $return_before = false)  === strchr
3      * @param string $str 要操作的字符串
4      * @param string $need 要查找的字符串
5      * @bool $return_before 是否返回$need在$str中首次出现之前的字符串
6      * @description:返回$need在$str中首次出现的开始到字符串结尾的那段字符串
7      * 相关函数:stristr()不区分大小写,
8      */
9     $email = 'yimengshixin@yeah.net';
10     $email_suffix = strstr($email,'@');   //输出@yeah.net
11     $domain = trim($email_suffix, '@');
12     var_dump($domain);                   //输出yeah.net
13     $username = strstr($email, '@', true);
14     var_dump($username);                //输出yimengshixin
  (2)strrchr($str, $need)  在字符串$str中查找从最后一次出现字符$need开始到字符串结尾的子串



/**
* strrchr($str, $need)
* @param string $str 要操作的字符串
* @param string $need 要查找的字符(如果是一个字符串,就使用字符串的第一个字符)
* @description:返回$need在$str最后一次出现的位置开始到字符串结尾的那段字符串
*/
$url = 'http://www.test.com/news/detail/2012/11/26/9778.html';
$baseName = strrchr($url, '/');    //输出:/9778.html
echo trim($baseName, '/');         //输出:9778.html
  (3)strpos($str, $need) 在字符串$str中查找$need首次出现的位置,返回这个位置值    =>不区分大小写时用stripos()
  (4)strrpos($str, $need) 在字符串$str中查找$need最后一次出现的位置,返回这个位置   =>不区分大小写时用strripos()



1 /**
2      * strpos($str, $need [,int $offset])
3      * @param string $str 要操作的字符串
4      * @param string $need 要被搜索的字符
5      * @param int $offset 搜索的起始位置(即字符串哪个字符开始算起)
6      * @description:搜索$need在$str中首次出现的位置
7      * 相关函数:stripos()不区分大小写,strrpos()最后一次出现的位置
8      */
9     $path = 'var/cache/tpl/20121126.php';
10     $root_location = strpos($path, '/');   
11     var_dump($root_location);    //输出3
12     var_dump(substr($path, 0, $root_location));   //输出var
13     $filename_location = strrpos($path, '/');   
14     var_dump($filename_location);    //输出13
15     var_dump(substr($path, 0, $filename_location)); //输出var/cache/tpl
16     var_dump(substr($path, $filename_location, strlen($path))); //输出/20121126.php
  (5)strpbrk($str, $charlist) 查找字符集$charlist的任意一个字符在$str首次出现的位置开始到结尾的子串



1  /**
2      * strpbrk($str, $charlist)
3      * @param string $str 要操作字符串
4      * @param string $charlist 要查找的字符集
5      * @description:在$str中查找$charlist中任意一个字符,返回指定字符第一次出现的位置开始的剩余部分
6      */
7     $string = 'We have nothing to do!';
8     $need = 'ahvt';
9     var_dump(strpbrk($string, $need)); //输出have nothing to do,因为在字符串$string中,h出现的位置在a前
  3、字符串的截取与转化
  (1)substr($str, $start, $length)  截取字符串从$start开始截取$length个字符串形成的子串



1 /**
2      * substr($str, $start, $length)
3      * @param string $str 要截取的字符串
4      * @param int $start 起始位置
5      * @param int $length 截取的长度
6      * @description : 截取字符串$str中从start位置开始截取$length个长度
7      */
8     $sStr = 'http://bbs.test.com';
9     var_dump(substr($sStr, 0, 4));    //输出http
  扩展:多字节字符串的截取(如汉字)
  mb_substr()用法与substr()类似
  mb_substr($str, $start, $length, $charset)
  



1 /**
2      * mb_substr($str, $start, $length,$charset) 截取多字节的字符串和substr()用法一样
3      * @param string $charset 编码类型
4      */
5     $var = '中国人民abc';
6     var_dump(mb_substr($var,0,5,'utf-8'));
  
  (2)implode($sep, $str) 将字符串通过分隔符转化为数组



1 /**
2      * explode($sep, $str) 通过一个分隔符将一个字符串转化为一个数组
3      * @param string $sep 分隔符
4      * @param string $str 要分隔的字符
5      */
6     $dir = 'var/www/cache/tpl';
7     //输出:array 0 => string 'var' (length=3)1 => string 'www' (length=3)2 => string 'cache' (length=5) 3 => string 'tpl' (length=3)
8     var_dump(explode('/', $dir));  
  (3)impolde($sep, $str) 将数组通过分隔符转化为字符串    <=>join



1 /**
2      * implode($sep, $array) 将数组通过分隔符连接成一个字符串
3      * @param string $sep 分隔符
4      * @param string $str 要分隔的字符
5      *
6      */   
7     $dirArray = array('http:/','bbs.test.com','index.php','news','detail','499','page','2.html');
8     //输出:http://bbs.test.com/index.php/news/detail/499/page/2.html
9     var_dump(implode('/', $dirArray));
10     var_dump(join('/',array('www','var')));    //输出www/var
  (4)str_split($str, $length) 将字符串根据指定的长度分隔成一个数组(处理汉字时请注意编码,编码不同,所占字符长度也不同)



1 /**
2      * str_split($str, $length) 根据长度将字符串分割成数组
3      * @param string $str 要分割的字符串
4      * @param int $length 要分割的长度
5      */
6     $split_str = '刘大,牛二,张三,李四,王五,朱六,廖七,周八,肖九';
7     var_dump(str_split($split_str, 7));  //输出:array(0=>'刘大',1=>'牛二'……)
8     
  4、字符串替换、填充等
  (1)str_replace($search, $replace, $str); 将字符串中$search部分用$replace来替换



1 /**
2      * str_replace($search, $replace, $str)
3      * @param string $search 要被替换的字符串
4      * @param string $replace 替换后的字符串
5      * @param string $str 要操作的字符 串
6      */
7     $bad = 'bad man';
8     var_dump(str_replace('bad', 'good', $bad));     //输出good man
  (2)substr_replace($str, $replace, $start, $length) 在字符串$str副本中从$start位置开始截取$length个字符形成的字符串,并将这段字符串替换成指定字符串返回



1  /**
2      * substr_replace($str, $replace, $start, $length) 截取$str副本中从$start开始截取$length个字符并替换为$replace
3      * @param string $str 要操作的字符串
4      * @param string $replace 替换后的字符串
5      * @param int $start 开始位置
6      * @param int $length 长度
7      */
8     $old = 'hello javascript!';
9     var_dump(substr_replace($old, 'php', 6, strlen($old)));   //输出hello php!
10     var_dump($old);                                           //输出hello javascript!没有改变
11     
  (3)str_repeat($str, $times);    将字符串$str重复$times次形成新的字符串



1  /**
2      * str_repeat($str, $times)
3      * @param string $str 要重复的字符串
4      * @param int $times 重复的次数
5      */
6     var_dump(str_repeat('##',6));    //输出:############
  (4)str_pad($str, $pad_length, $pad_str, $pad_type) 字符串填充



1  /**
2      * str_pad($str, $pad_length, $pad_str,  $pad_type = STR_PAD_RIGHT)
3      * @param string $str 被操作的字符串
4      * @param int $pad_length 填充后的长度
5      * @param string $pad_str 用于填充的内容
6      * @param const $pad_type 填充方向,分别有这向个常量 :STR_PAD_LEFT(从左边填充),STR_PAD_RIGHT(从右边填充),STR_PAD_BOTH(两边填充)
7      */
8     var_dump(str_pad('abc',10,'**'));    //输出abc*******
9     var_dump(str_pad('abc', 7, '*',STR_PAD_LEFT));  //输出****abc
10     var_dump(str_pad('abc', 6, '*', STR_PAD_BOTH));     //输出 *abc**
  5、与ASCII相关的字符串操作
  (1)ord(string $char)返回字符串对应的ASCII码值
  (2)chr(int $ascii)    返回ascii值对应的字符



1 /**
2      * int ord(string $char)
3      */
4     var_dump(ord('A'));       //输出65
5     
6     /**
7      * string chr(int $ascii)
8      */
9     var_dump(chr(72));        //输出H
  6、与html转义有关的
  (1)strip_tags($str, $remain_tags)  删除html或xml标签(其实只要是<>都会被过滤掉)
  (2)nl2br($str) 在新行前加入<br/>换行
  (3)wordwrap($str, $length) 自动换行(强制换行)
  



1  /**
2      * strip_tags($str, $remain_tags)
3      * @param string $str
4      * @param string $remain_tags 要留的tag
5      */
6     $html = '<h3>标题<span>更多</span><h3> <a href="http://www.test.com">链接</a><now></now>';
7     var_dump(strip_tags($html));    //输出:标题更多 链接
8     var_dump(strip_tags($html, '<h3>'));  //输出:<h3>标题更多<h3> 链接
9     
10     /**
11      * nl2br($str) 新行前添加<br/>
12      */
13     $nl = '
14     very good!';
15     var_dump(nl2br($nl));    //输出:'<br />                       very good!
16     
17     /**
18      * wordwrap($str, $length) 强制换行(自动换行)
19      */
20     $line = '0123456789abcdefghijklmnopqrstuvwxyz';
21     $newText = wordwrap($line, 10, '<br/>');
22     var_dump($newText);
  (4)htmlspecialchars($str, $style) 把几个预定义的字符转义成实体
  需要转义的字符:双引号",单引号',大于号>,小于号<,还有&
  $style有三个常量可供选择:ENT_COMPAT(只转义双引号,默认),ENT_QUOTES(双引号和单引号都转义),ENT_NOQUOTES(双引号和单引号都不转义)



1 /**
2      * htmlspecialchars($str, $style, $charset)
3      * @param string $str 要操作的字符串(要实体化)
4      * @param const $style 操作方式:
5      */
6     $var1 = '<h3>you are a "bad" man!<h3>&me?'; //输出:&lt;h3&gt;you are a &quot;bad&quot; man!&lt;h3&gt;&amp;me?
7     $var2 = "<h3>It's my pleasure!</h3>&me?";   //输出:&lt;h3&gt;It's my pleasure!&lt;/h3&gt;&amp;me?
8     var_dump(htmlspecialchars($var1));
9     var_dump(htmlspecialchars($var2));
10     var_dump(htmlspecialchars($var2,ENT_QUOTES)); //输出:&lt;h3&gt;It&#039;s my pleasure!&lt;/h3&gt;&amp;me?
  (5)htmlentities($str,$flag =ENT_COMPAT,$charset)
  将更多的字符转义成html实体
  (6)addslashes($str)和stripslashes($str)为单引号和双引号添加转义\
  7、对字符串进行计算(有的也理解为加密)
  (1)cypt($str) 计算单字符串散列
  (2)md5($str) 进行md5计算
  8、其他未分类
  (1)strrev($str) 反转字符串
  如:$a = 'abc';
  var_dump(strrev($a));   //输出:cba
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105763-1-1.html 上篇帖子: PHP 的 Smarty 模板页中分离JS并避开literal标签的解决方法 下篇帖子: php.ini-dist php.ini-recommended
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表