PHP字符串常用函数总结1

Original 2018-11-23 10:05:22 1419
abstract:一.字符串输出函数汇总    + echo :语言结构,输出一个或者多个字符串,字面量或者单值变量    + print:功能和echo相同,输出一个或多个标量,但会有一个返回值,成功返回1    + print_r($val,$bool):可以输出一个标量,数组,对象等任何类型

一.字符串输出函数汇总

    + echo :语言结构,输出一个或者多个字符串,字面量或者单值变量
    + print:功能和echo相同,输出一个或多个标量,但会有一个返回值,成功返回1
    + print_r($val,$bool):可以输出一个标量,数组,对象等任何类型,可视为print的升级版
    + var_dump($var1,$var2...)可以详细的输出一个或者多个任何类型的变量,可是为echo的升级版
    + var_export($var,$bool):以纯字符串形式输出任何类型的数据,可用于php语句,适合于结果拼装
    + printf("格式字符串",数据):输出格式化的字符串,变量使用占位符,主要用于标量数据

    1.echo

echo 'hello world!!'; //字面量
$name = '林冲';
echo $name;//变量
echo '<h3 style="color:lightsalmon">m.sbmmt.com</h3>';
//支持同时输出多个变量或字面量
echo 'Hello',$name,'<hr>';

    2.print 与echo类似  ,但是有个返回值

echo print '我是print的输出内容,返回值是:<hr>';    //1

    3.print_r($val,$bool):可以输出一个任何类型的数据    第二个参数是布尔值,true结果不显示在浏览器,可以保存到一个变量中

$name = '林冲';
print_r($name);
//输出复合数据,数组,对象
print_r([2,3,5,'zzz',71,'asdzxc',123123]);echo '<hr>';
print_r(new stdClass());echo '<hr>';
//第二参数为true 则可以保存到变量中
$tmp = print_r('2018世界杯,中国除了足球队没有来 ,其他都来了',true);
echo $tmp,'<hr>';

    4.var_dump():可以输出变量的详细信息

var_dump('m.sbmmt.com');//字面量
echo '<hr>';
$site = 'php中文网-m.sbmmt.com';
var_dump($site,'真棒!<hr>');
//可以输出复合类型:对象,数组
var_dump([1,2,3,4,5],new stdClass());
echo '<hr>';

    5.var_export($var,$bool) 以字符串可以输出一个任何类型的数据

print_r($site);
echo '<hr>';
var_export($site);  //当做php语句来使用
$str = var_export($site);   //和$str = 'php中文网-m.sbmmt.com';等价
echo var_export($site,true).'<hr>';
//数组
echo var_export(['张飞','关羽','刘备'],true).'<hr>';

    6.printf()    格式化输出结果

printf("来%s起义%s一点都不容易!<br>",'水泊梁山',',');
printf('我这个月跳槽了,涨了%s元工资,真开心',1500);
echo '<hr>';

小结:只有echo  和var_dump可以输出多个变量信息  其他的只能输出一个  第二个参数支持布尔值的 只有print_rvar_export

二.字符串的过滤与填充

    + trim($str),ltrim($str),rtrim($str),过滤掉字符串中的指定字符
    + str_pad($str1,$size,$str2,FLAG):向指定方向,填充指定字符串指定长度

    1.trim(字符串,要过滤掉的字符串) rtrim 右侧过滤 ltrim 左侧过滤

$input = '   admin   ';
echo '过滤前',$input,'原始长度:',strlen($input).'<br>';        //11
$input = trim($input);                                         //赋值给原变量
echo '过滤后',$input,'原始长度:',strlen($input).'<br>';        //5

$str = 'demo2.php';
$str = rtrim($str,'.php');        //右侧删除扩展名
echo $str.'<hr>';
$str = 'm.sbmmt.com';
$str = ltrim($str,'www.');        //左侧删除www.
echo $str.'<hr>';

//正则过滤
$str = '123梁山好汉54921';
$str = trim($str,'0..9');
echo $str.'<hr>';

    2.字符串填充:str_pad($str,$size,$str,FLAG)    参数1:要填充的字符串,参数2:填充长度,参数3:用指定字符串填充,参数4填充方向(左,右,两侧一起)

$str = '魏蜀吴';
echo '<pre><span style="background:lightsalmon;">'.$str.'</span></pre><br>';
echo '当前长度'.strlen($str).'<br>';        //获取字符串长度
//用默认空格往右面填充
$str = str_pad($str,20);                    //只传前两个参数,即默认右侧传入空格到指定长度
echo '当前长度'.strlen($str).'<br>';        //20
echo '<pre><span style="background:lightsalmon;">'.$str.'</span></pre><br>';

/用指定字符
$str = '魏蜀吴';
//$str = str_pad($str,20,'*',STR_PAD_RIGHT);    //右侧传入指定字符
//$str = str_pad($str,20,'*',STR_PAD_LEFT);     //左侧传入指定字符
$str = str_pad($str,20,'*',STR_PAD_BOTH);       //两侧同时传入字符
echo '当前长度'.strlen($str).'<br>';
echo '<pre><span style="background:lightsalmon;">'.$str.'</span></pre><br>';

//典型应用:数据加密
//密码一般都是md5()32字符串 ,sha1()40位字符串,相同的密码加密后总是相同的
$pass = '123456';
echo sha1($pass).'<br>';

$pass = str_pad($pass,40,'php',STR_PAD_BOTH);    //用指定字符串填充原始密码后,再进行sha1()加密,更加安全
echo sha1($pass).'<br>';

trim,rtrim,ltrim 均可以过滤指定字符 只是方向不同,str_pad 可以用于进行更加严格的数据加密 在传入数据库前的数据中进行填充指定字符串来进行加密

三.字符串的大小写转换

    + strtolower($str):字符串转为小写
    + strtoupper($str):将字符串转为大写
    + ucfirst($str1):将字符串首字母转为大写
    + ucwords($str):将字符串每个单词首字母转为大写

    1.字符串的大小写转换

echo strtolower('THIS IS COURSE'),'<br>';
echo strtoupper('this is course'),'<br>';
echo ucfirst('this is course').'<br>';
echo ucwords('this is course').'<br>';

//应用1:将文件全部转为小写,实现跨平台(Linux下区分大小写)
$files = ['Model.php','View.php','Controller.php'];
foreach ($files as $file){        //遍历数组
    $res[] = strtolower($file);    //将遍历的数组元素全部转为小写然后传入新空数组
}
$files = $res;                    //赋值给原数组
echo var_export($files,true).'<br>';    //输出

//应用2:操作全部转为小写;方便操作
$opt = 'Edit';//edit/EDIT/Edit/EDit
//$opt = 'Delete';//delete/DELETE/Delete/DElete
$opt = strtolower($opt);
switch($opt)
{
    case 'select' :
        print '查询操作';break;
    case 'edit':
        print '编辑操作';break;
    case 'update':
        print '更新操作';break;
    case 'delete':
        print '删除操作';break;
    default:
        print '非法操作';break;
}

strtolower(),strtoupper(),ucfirst(),ucwords() 几个的用法几乎相同,注意每个之间的作用不同

四.对HTML标签的过滤与转换

    + nl2br($str):在换行符\n前面插入html换行标签<br>
    + htmlspecialchars($str):将代码中的引号,&,标签标记<,>转为html实体字符,不解析
    + htmlspecialchars_decode($str):htmlspecailchars($str)反操作
    + htmlentities($str):将所有的html标记全转实体,包括了htmlspecailchars()中的标记
    + html_entity_decode():htmlentities()的反操作
    + strip_tags():过滤掉所有的htmlphp标记,可以有设置允许保留的标记,很实用

    1.nl2br():在字符串中的\n字符之前插入一个<br>标签

$str = "2018年梁山好汉\n好像都没在";
echo nl2br($str).'<br>';    //换行了

    2.htmlspecialchars() 和反操作 htmlspecialchars_decode()

$str = '<h3>他是\'一个&nbsp;有"故事"的人</h3>';
//不转义输出
echo '不转义输出'.$str.'<br>';    //有h3样式和空格
//转义输出,单引号 双引号 &,<,>
echo '转义输出'.htmlspecialchars($str).'<br>';    //将标签不解析原样输出了  转义输出<h3>他是'一个&nbsp;有"故事"的人</h3>

$str2 = '&lt;h3&gt;他是\'一个&amp;nbsp;有&quot;故事&quot;的人&lt;/h3&gt;';
echo '转义输出'.htmlspecialchars_decode($str).'<br>';        //反操作  有h3和空格样式

    3.htmlentities()  反操作 : html_entity_decode()    所有html标签都会不解析

$str = "<p>魏国&蜀国正在\$交锋,'吴国'偷鸡!!!</p>";
echo '转义输出'.htmlentities($str).'<br>';    //转义输出<p>魏国&蜀国正在$交锋,'吴国'偷鸡!!!</p>

$str = '转义输出&lt;p&gt;魏国&amp;蜀国正在$交锋,\'吴国\'偷鸡!!!&lt;/p&gt;';
echo '转义输出'.html_entity_decode($str).'<br>';    //    魏国&蜀国正在$交锋,'吴国'偷鸡!!!  解析html标签

    4. strip_tags()过滤htmlphp标签

$str = '<p>蜀国是<span style="color:lightcoral">最强大</span>的国度么?</p>';
echo $str;
//将所有的标签过滤掉
echo strip_tags($str).'<hr>';    //蜀国是最强大的国度么?

nl2br(),htmlspecialchars(),htmlspecialchars_decode(),htmlentities(),html_entity_decode(),strip_tags()用法都不难,就是名字长,需要背一下


Correcting teacher:韦小宝Correction time:2018-11-23 10:54:34
Teacher's summary:可以啊!很不错哦!写的很完整!也很棒!继续加油吧!!!

Release Notes

Popular Entries