PHP基础加强(第十天)
来源:互联网 发布:数码收纳包 知乎 编辑:程序博客网 时间:2024/05/19 20:22
1、str_replace函数
<?php/* str_replace 字符串替换函数 str:string 字符串 replace: 替换*/// 准备,把hi换成hello$str = 'hi,this is lily,history';$newstr = str_replace('hi','hello',$str);echo $str,'<br />',$newstr,'<br />';// 能不能帮我统计一下,替换了几次呢?$newstr = str_replace('hi','hello',$str,$num);echo $str,'<br />',$newstr,'<br />';echo '替换hi',$num,'次';echo '<hr />';// 再次要求,把hi换成hello, 再把li 换成 ul// 可以用数组参数,指定多种替换.$search = array('hi','li');$replace = array('hello','ul');$newstr = str_replace($search,$replace,$str);echo $newstr,'<br />';/*hi 单词===>hello单词但this单词中间的一部分的hi,也被换了,导致this单词都错了.能不能,专替换hi单词呢?如果hi是单词的一部分,则不替换?*//*突然奇想,hi=>hello, hello=>hi*/$str = 'hi lily, hello jim';$newstr = str_replace(array('hi','hello'),array('hello','hi'),$str);echo $newstr,'<br />'; // 觉得应该变成 hello lily, hi jim, 实际打印是 hi lily,hi jim/**分析:hi->hello hello lily, hello jimhello->hihi lily, hi jim**//*strtr ,以单个字符对应来替换的比如 strtr($str,'hi','ab'), 则执行 h->a ,i->b如果看着不舒服,可以换个写法*/$str = 'hi lily, hello jim';echo strtr($str,'hi','ab'),'<br />';// he lely, hello jem// 用户在网站有可能输入全角字符,由我们的程序统一把全角转半角$str = '你好。,12345,'; echo strtr($str,array('1'=>'1','2'=>'2'));/****全半角转换,用strtr非常方便 在网站开发中,这个功能也常见.比如,ecshop里就有,如下function make_semiangle($str){ $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E', 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O', 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T', 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y', 'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z', '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[', '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']', '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => '<', '》' => '>', '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-', ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.', ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|', '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"', ' ' => ' '); return strtr($str, $arr);}****/?>
2、sub_str
<?php// 截取子字符串// substr/*string substr ( string $string , int $start [, int $length ] )$string: 待截取的长字符串start: 截取开始的位置$length: 正数时代表截取的长度,负数时代表截取结束的位置*/$str = 'abcdefg';/*当第3个参数,不指定时,截取到字符串的"结尾"*/echo substr($str,3),'<br />'; // defg/*经理说:把字符串末尾的3个字符截取出来又怎么办呢?*/// 办法1,先算出length,再-3$str = 'abcdefg';$start = strlen($str) - 3;echo substr($str,$start),'<br />';// 办法2,起始位置不走左数,而是呢,填负数,从右往左数.echo substr($str,-3),'<br />';/**经理又要求:专门截取字符串开头的3个字符分析:start 应该填0截取长度: length 应该填3**/// 第3个参数为正数时,代表要截取的长度$str = 'abcdefghijk';echo substr($str,0,3),'<br />';/**经理又要求:专门截取除了头3位,和尾巴3位,即,中间的那些字符串.分析:start应该是3length,如何代表长度,多长呢? 不一定,因为字符串的长度不好算.这时,可以把length写成负数.如果length是负数,不代表长度,代表**/$str = '123456789';echo substr($str,3,-3),'<br />';// 至此,经理没能刁难你,完成任务/**这时,我们对经理说:"还需要截什么吗? 中文我也能截,来点任务吧"substr 它是按字节来操作的,不考虑什么编码.**/$str = '中华民国'; // 我的文件是utf-8编码的.echo substr($str,6,3),'<br />';/*经理说:"小样儿,牛叉是吗"来截这一段"lily你的代码report给我,中午我们有个meeting,一会带你吃KFC"*/$str = "lily你的代码report给我,中午我们有个meeting,一会带你吃KFC";echo substr($str,0,6),'ab'; // 按字节截,'lily你'是7个字节才完成// '你'的3个字节,被截了2个,出了问题./**面试题:如何截取中文无乱码,假设UTF-8编码1: 用系统函数,自己找2: 根据utf8的编码规则,用substr自己截.后面:有字符编码专题,同学们可以先研究一下.**/?>
3、strstr函数
<?php/*strstr($str,$needle)作用: 是在$str中找到指定的$needle,而且是$needle第一次出现的位置,返回该位置直到字符串结尾的这一部分*/$str = 'abc.def.jpg.exe';echo strstr($str,'.'),'<br />'; // .def.jpg.exe/***经理说:能否把第一次找到的$needle的位置 之前的字符串截出来呢?答:能,从PHP5.3.0版本开始,strstr函数多了第3个可选参数,***/echo strstr($str,'.',true),'<br />';// strstr === strchr 函数,/**经理说,能否先把$needle 最后一次出现的位置找出来,从该位置,一直截到结尾.答:strchr**/echo strrchr($str,'.'),'<br />';/// 面试时,让你计算一个文件的后缀?$file = 'new.txt';echo strrchr($file,'.');?>
4、str_split函数
<?php// 字符串 分割,反转,拼接$str = 'abcdef';$arr = str_split($str);// 发现,把字符串的字符,拆成了数组,每个单元一个字符.print_r($arr);// 经理问: 能不能2个字符一个单元, 拆成数组.$arr = str_split($str,2);print_r($arr);// 截取到最后,如果剩下的字符串,不够长度N,那就剩下当一组.$arr = str_split($str,4);var_dump($arr);?>
5、explode和implode
<?php// PHP中,字符串函数和数组函数最多,// 字符串和数组,有2个函数,是他们的桥梁,非常频繁的使用.// 就是implode,和explode// 有的网站,写文章时,让我们填写标签,"多个标签用逗号隔开"$str = 'abc,中国,美国,日本';// explode,是根据指定的分割符,把字符串拆成数组.$arr = explode(',',$str);print_r($arr);// implode,是根据指定的连接符,把数组再拼接成字符串$arr = explode(',',$str);echo implode('~',$arr),'<br />';// 你可以只传一个数组做参数,不指定连接符,// 这样,将把数组单元直接拼接起来echo implode($arr);?>
6、chunk_split函数
<?php$str = '12345678';echo chunk_split($str,3,','); // 每隔3个长度,加一个','// 不说明第3个参数,则加换行符.// 想: 把12345678 转换成 12,345,678 的格式.?>
7、字符串转义函数
<?php// 字符转义函数,非常重要$str = "abc ', hello";echo $str,'<br />';/***现在我们还没有学习mysql,你可以还意识不到一个单引号的破坏作用.但要知道,单双引号如果不小心,数据库是会被注入的.应该把客户输入进来的数据,进行转义,防止单双引号带来的破坏.***/echo $str2 = addslashes($str),'<br />'; // 单引号被转义成 \'// 能不能把\',转回 '// 答:能echo stripslashes($str2),'<br />';$str = '<ab>';echo $str;echo htmlspecialchars($str);/**htmlspecialchars --> 特殊符号转成html实体htmlspecialchars_decode--> 实体转成符号**/?>
8、字符串比较函数
<?phpif(strcmp('D','a') > 0) { echo 'D>a';} else if(strcmp('D','a') < 0) { echo 'D < a';} else { echo '相等';}// D比a还小, 因为是按二进制中 ascii码比的.?>
9、大小写转换函数
<?php// 大小写转换$str = 'HeLLo, ThiS IS LilY, BUT,I LoVE HanMEImei';// 转成小写echo strtolower($str),'<br />';// 转成大写echo strtoupper($str),'<br />';// 每个单词的首字母大写// 但是,只是帮你把每个单词的首字母变大写,其他的字母,他不做影响.echo ucfirst($str),'<br />';// 因此,我们想把每个单词的首字母大写,而且,只有首字母大写.echo ucfirst(strtolower($str));?>
10、字符串反转函数
<?php$str = 'abcdef';// 打印出字符串的第1个字母echo substr($str,0,1),'<br />';// 字符串还有类数组的特性, 即可以用索引/下标,把指定的字符取出来echo $str[0],'<br />';// 如何实现字符串反转$str = 'abcde';function rev($str) { $len = -strlen($str); for($new = '',$start=-1; $start >= $len; $start--) { $new .= substr($str,$start,1); } return $new;}echo rev($str),'<br />';echo strrev($str); // 系统自带的字符串反转函数.?>
11、如何获取文件后缀
<?php// 用5种以上方式获取文件的后缀// 例: a.jpeg.exe, 获得 exe,或者 .exe$file = 'a.jpeg.exe';// 方法1function getext($file) { return strrchr($file,'.');}echo getext($file),'<br />';// 找最后一个 . 出现的位置,再substr截取// strrpos是找子字符最后一次出现的位置// $file = 'a.jpeg';function getext2($file) { return substr($file,strrpos($file,'.'));}echo getext2($file),'<br />';// 把字符串反过来,然后再找第一个点出现的位置.function getext3($file) { $file = strrev($file); return strrev(substr($file,0,strpos($file,'.')));}echo getext3($file),'<br />';// 用系统函数 pathinfofunction getext4($file) { /* $arr = pathinfo($file); return $arr['extension']; */ return pathinfo($file,PATHINFO_EXTENSION);}echo getext4($file);// 如果学了数组,还可以有多种做法. 先讨论到此.?>
12、数字格式化函数
<?php// 把1234567,转成 1,234,567的形式$num = '1234567';function t1($num) { $arr = str_split(strrev($num),3); return strrev(implode(',',$arr));}print_r(t1($num));echo '<br />';function t2($num) { $num = strrev($num); $num = strrev(chunk_split($num,3,',')); $num = ltrim($num,','); return $num;}print_r(t2($num));echo '<br />';// 系统函数,一句话搞定.echo number_format($num);?>
0 0
- PHP基础加强(第十天)
- PHP基础加强(第十一天)
- PHP基础加强(第十三天)
- PHP基础加强(第十五天)
- 基础加强第十天
- PHP基础加强(第二天)
- PHP基础加强(第四天)
- PHP基础加强(第六天)
- PHP基础加强(第十二天)
- PHP基础加强(第十六天)
- PHP基础加强(第一天)
- PHP基础加强(第三天)
- PHP基础加强(第五天)
- PHP基础加强(第七天)
- PHP基础加强(第八天)
- PHP基础加强(第九天)
- PHP基础加强(第十四天)
- 第十天(php)
- php基础5---面向对象
- Retrieve the match text (提取获取的字符)
- 利用硬链接和truncate降低drop table对线上环境的影响
- DecodeEditEncodeTest.java
- 给Android应用开发者的十个建议
- PHP基础加强(第十天)
- VirtualBox安装64位的CentOS问题
- 牛人主页
- Advanced Installer10.0中文版完美安装软件教程 msi,exe制作教程
- CentOS Linux更改MySQL数据库目录位置具体操作
- 什么是KBEngine
- 其他mediacodec的一些例子
- Console 常用代码
- [LeetCode]Longest Common Prefix