注意:本文上午已经发布,由于排版问题特修改后重发。

本期格言

越高级的技术越需要扎实的基本功。而学好基本功的首要条件是能沉住气和静下心。

往往很多程序员太想一口吃一个肥婆而直接略过基础部分去学习高级部分,长期以往会导致越来越丧失继续学下去的信心,但迫于各种压力又不想放弃,于是气急攻心、郁闷纠结,最后血压越来越高,于是产生了一个程序员通病的描述词:“浮躁”。

本期扯淡

大家会发现很多程序员喜欢买书自学。其实这是很好的习惯,有对IT行业的热情和喜好就会有执着,有了执着就会想尽各种办法获取知识,当我们通过无限的量变后跳过了执着这个阶段,终于欣喜的发现了走出“程序员囧途”的出口,于是开始不顾一切的奋起创业。

然而买书自学方面,一些有点初级技术经验的程序员青年可能有个习惯:一般会先熟读第二章(有些书第一章啰嗦到什么程度,大家懂的)。

然后发现头两章挺简单,于是偷偷的往后跳过四到五章,这个跳跃很有意思,一般技术类书籍过了五、六章后,会开始讲实例和应用。

于是该青年顿时来了兴趣,他决定先看应用实例,因为实例搞懂了明天就可以投简历了,效率多高啊。于是青年点上烟盘腿坐在床上,并警告室友把dota音效关掉。

一个小时后,室友欢呼—“翻盘了”。再一看青年,已经在床上沉睡多时。

正文部分

PHP的string函数

很多javaer和C# Man经常会在网上互博,譬如”java好还是c#好”。这方面的话题甚至比”社会主义”好还是“资本主义”好讨论的更加激烈,更加无底线。这时其中一个 javaer拿出java中对String对象的处理,宣称其有多么的高效率、结构多么的分明,C# Man不甘示弱也拿出string对象,宣称其有多么的方便、功能有多么的强大。这时一个PHPer不小心点进了该贴,他弱弱的打算参与跟帖,于是他列出 了PHP中string函数列表,瞬间终结了上面(意)淫乱的场面。

不得不说,PHP的string函数确实非常强大。很有名的wordpress把这些函数几乎用到了极致,而今天本文要简要讲的就是关于PHP的string函数。

string函数是php内置的。不需安装,不需引用任何函数库。这点很好,干净利落。我喜欢,拿来就可以使用。

接下来爆料几个常用的string函数,不常用的大家可以去查手册,个人建议有些函数根本不用去学,用的时候再查即可。这点是java或者c#均不能媲美的。

一、去空格,字符替换,输出

这三个字符处理函数实在是太常见了,行内人士把它们叫做“三宝”,为何叫三宝?那是因为掌握这三宝加上一些html知识简直就可以立马上手做一个并不是特别幼稚的页面了,同时基本上大部分功能性函数都要用到这老三样。

去空格:trim 。去除字符串前后空格

用法也灰常的简单 如:

  $str=’   南京8秒绿灯走百米 中国式过马路孰之错   ‘;$str=trim($str);   // 这里就达到了去除”南“和”错“两个字身边的空格

这个函数看似简单,不过有个小学问。它不光是去除字符串两把的普通空格,还能去除字符串两边的”\t(这货是全太阳系最讨厌的,白白净净的,不仔细看还以 为是空格其实是一个tab)” “\0″也就是 NULL。”\n”换行符,”\x0B” – 纵向列表符, ”\r” – 回车。所以不要以为trim只去空格,其实php内核默默无闻的帮你干掉了很多字符。

如果$str=trim($str,’\t’); 则代表 这个trim只去除字符串前后的 \t也就是 tab,遇到普通空格之类的是不会管的。

  输出:它存在 echo、print、printf 这三个主要函数

至于区别:大家只需知道 print比echo稍微慢,printf可以格式化输出即可。不用搞的太清楚。如果什么都要搞得太明朗太计较,那么你何必去学php。

这里只讲printf(print大家就忘记这货吧,只需用echo即可)

   $str = “php”;$number = 100;printf(“开心学%s %u天”,$str,$number);

则会输出 开心学php100天。按照顺序%s代表字符出,$u代表数字。有几个%符号,后面就要跟几个参数。如果我倒过来写:

  printf(“开心学%s %u天”,$number,$str); 那就会输出开心学100 0天。

php首先会把$number当做字符串那100就是”100″,把”php”这个字符串当做数字型,大家知道把php变为数字是行不通的,所以就是0.

 字符串替换函数:str_replace

这个函数非常的有用。怎么个有用发?网警会让你充分知道你为什么要学会这个函数。你懂的。

 $str=str_replace(“敏感词汇”,”我爱祖国”,”XXX@#%$&%@这里其中有一个是敏感词汇“);

这就代表我要把某些 敏感词汇替换成”我爱祖国“。注意这个函数后面还有个count可选参数。几乎没什么用,那是用来计数用的,代表一共替换了几次。如果要实现只替换几个,那么要用正则表达式来做。本章暂时不讲。

有人说这个函数效率差。其实对于小网站小数据量的处理根本无所谓。如果你发现你的网站中简简单单的str_replace一个小字符串已经很影响服务器性能了。那么恭喜你,你要发大财了。

二、strpos()

这个函数也是非常有用的。类似于我们在其他语言中常用的indexof。

譬如:$str=’这是我又一个个人博客:网址是www.shenyisyn.org。’;

那么:

  $i=strpos($str,”shenyisyn”);echo strval($i);  //注意 这里为什么要用strval ,如果这个$i 有值,那么它是int型的。   //你直接输出在网页里,通过肉眼是看不到的。

输出结果就是38。

 这里有个小学问

我们不能简单的用 if(strpos($str,’shenyisyn’)) 来判断字符串中是否存在 “shenyisyn”这个词汇。

  因为假如

  $str=”shenyisyn是我的中文名缩写”;//那么 strpos($str,’shenyisyn’) 的真值是0。在php中0就是false。而实际上这个匹配是能匹配到的//所以你这样:if(strpos($str,’shenyisyn’)===false) 这就代表没有指定的’shenyisyn’这个字符串存在.

在PHP中 ”===”的区别就好比高考时的”裸体检查“,除了医生确认我们==男生外,还要裸体”===”确认一下,万一你只是外表像而已呢?也就说”===”连值带类型一起比对了。在php中0==false,但是0!===false

   这个函数是从左到右进行检索。反过来就是strrpos 它是从右往左,类似于lastindexof

  同样的.strpos是区分大小写。那么不区分的函数就是stripos。另外一个从右往左的货就是 strripos。

  用法一样只不过顺序不一样。就不多赘述了。

三、计算字符串长度-strlen

  这是一个很搞的函数。都怪秦始皇走的太早。如果统一了全世界就没这问题了。

  $str=”红十会”;echo strval(strlen($str));

  大家知道结果么?肯定不是3,也不是6,而是9。

   大家看一下:strlen(“红十会”);  这里默认每个中文字符算3个字节。那么整个长度就是6。这里英文和数字都是1个字节。如果改成strlen(“红10会”);那么就是3+1+1+3=8个字节。

  如果要转换成大家耳目能详细的 英文1个字节,中文两个字节 那么要这么做

 echo mb_strlen($str,’utf8′); //这里要确保mbstring 这个库被开启。默认是不开启的。

   当然mb_strlen第二个参数还可以是gbk或者gb2312,这个不建议使用,这会让你对人生感到迷茫的。况且现在开发网站,使用utf8是基本之 道。如果你的网站连使用utf8这样的大字库都产生巨大压力了而无法正常运转了,那么再一次恭喜你,你这次真的发了。既然发了,那就不在乎多买几台服务器 了。

四、strip_tags 剥去html标记

官方中文解释使用了”剥去“,这个词用得好。用了剥去这个犀利的词语。什么叫剥去?好比你明明穿了一件很炫很酷的t恤去单位路上,突然一个流氓跑过来把你的t恤剥去穿自己身上跑了,于是你只能光着身子回单位上班,到了单位同事把你笑了一整天。

这个剥去就是这个效果。它只是剥掉,并没有过滤掉包含在html或者xml标记内部的内容。

$str=”一个老汉好心捐了10万<strong>被挪用后</strong>,他很伤心”;
$str=strip_tags($str);
echo $str; 则 会输出 一个老汉好心捐了10万被挪用后,他很伤心。

这个函数的”剥去“效果在于,他不会把<strong>标记中间的”被挪用后“的字符删去,否则就变成了”一个老汉好心捐了10万,他很伤心“。

这个函数非常妙。妙到大大的降低了我们开发web程序中的很多难度和繁琐的地方。正应了php就是为web而生的这句话。

 今天暂时讲这几个函数。稍后继续。。。。

 如有不当之处,望积极指正。

注:本系列后续章节的转载除非本人自发,否则一律必须得到本人的书面同意。否则本人保留投诉和鄙视的权利。

我的官网:http://www.shenyisyn.org/2013/05/05/php100-5.htm

[开心学php100天]第五天:string函数(上)相关推荐

  1. [开心学php100天]第三天:不羁的PHP文件操作

    本期格言: 在当年还没有数据库存在的时候,读写文件是我们程序员在空虚的夜晚唯一能干的事情之一(也许不一定哦~~~).所以即使现在这项技术变的有多么的简单.快捷和普通,我们依然要保持细致的态度和严格的操 ...

  2. [开心学php100天]第六天:用php玩转页面(基础篇)

    本期格言: 1.做自己最擅长的事情.因为擅长带给你高效和快感. 2.写代码要学会装B.不要老老实实的敲每一个字符串输出和函数.我们要让接手我们代码的学弟学妹们崇拜的追问我们"哥,这个函数和方 ...

  3. 开心学PHP100天(七)]精讲PHP构造函数:父亲和儿子的恩恩怨怨

    前戏部分: 一.一句话概括php: Php就是用来做web应用的,其中这厮很适合做网站,大名鼎鼎的wordpress就是php开发的.Web以外的应用请一定不要考虑用php做.  本文涉及到的一些关键 ...

  4. [开心学PHP100天(七)]精讲PHP构造函数:父亲和儿子的恩恩怨怨

    前戏部分: 一.一句话概括php: Php就是用来做web应用的,其中这厮很适合做网站,大名鼎鼎的wordpress就是php开发的.Web以外的应用请一定不要考虑用php做.  本文涉及到的一些关键 ...

  5. oracle软件工程,.Net软件工程师学用Oracle系列(9):系统函数(上)

    .Net程序员学用Oracle系列(9):系统函数(上) 本文大纲 众所周知,Oracle 中系统函数特别多,貌似有好几百个,但实际上大部分函数对于普通应用而言,永远都用不到,本文将主要介绍 Orac ...

  6. 8天学通MongoDB——第五天 主从复制

    随笔 - 218  文章 - 1  评论 - 3819 8天学通MongoDB--第五天 主从复制 从这一篇开始我们主要讨论mongodb的部署技术. 我们知道sql server能够做到读写分离,双 ...

  7. 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学

    com.cym.shuXue02--前拼后广--开心学数学 转载于:https://www.cnblogs.com/Ewenblog/p/8961659.html

  8. 五年级计算机学情分析,小学五年级信息技术教案教学计划

    小学五年级信息技术教案教学计划 一.指导思想: 为了推广计算机信息技术,小学五年级信息技术(下册)教案.提高全民族的科学文化素质,发展中小学信息技术教育.根据教育部制定的<中小学信息技术课程建设 ...

  9. 零基础无实物一步一步学PLCS7-1200仿真(五)-四路简易抢答器控制

    本次项目为四路抢答器,通过本次项目了解项目开发流程,未来扩展多路抢答器只需要对程序进行微调即可. 项目要求: 1.有4组进行抢答,抢答按钮为SB1-SB4,对应4个抢答指示灯为L1-L4. 2.主持人 ...

最新文章

  1. Go在招聘中最吃香、安全工程师薪资涨幅最高 | Hired年度软件工程师报告出炉
  2. LINUX 触摸屏驱动
  3. java raster_Raster
  4. CVPR2020最全整理:分方向论文下载,Github源码、论文解读等[计算机视觉][目标检测]
  5. UG集成显卡 显示成烂面
  6. For the completeness of the story
  7. 微软11月补丁星期二值得关注的6个0day及其它
  8. java中蓝色是多少_JAVA几个常见错误简析
  9. lgg7刷机包下载_LG G7 恢复Download回官方。
  10. 目前在题库管理和试卷生成方面最好用的共享软件(已更新)
  11. uart协议学习,从了解到入门,看这篇文章
  12. 一文详细理解计算机网络 - 物理层(考试和面试必备)
  13. 悬停提示工具:Tippy.js
  14. Win10怎么安装Apache服务
  15. 怎样才能在微信朋友圈发长视频?
  16. Java快递配送管理系统
  17. 【Unity VR开发基础】Player视角设置调整与地面的相对高度
  18. 盘点8个国内外知名表单软件平台,你知道几个?
  19. android 光圈动画,Android 自定义View学习(4)波浪效果+光圈扩散效果
  20. uniapp将聊天页面定位始终定位到最底部展示

热门文章

  1. WebForm页面间传值方法(转)
  2. 最全金蝶KIS记账王使用问题汇总
  3. winserver 服务开机启动
  4. Silverlight C# 游戏开发:L5 3D基本的灯光
  5. Jconsole工具和Java VisualVM
  6. 寒假打工去,不能继续写博客,表示好心痛啊。。。
  7. 20190719算法题存档
  8. jinfo-jvm参数信息工具
  9. RabbitMQ pull与push的区别
  10. PHP key() 函数