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
原创粉丝点击