多数大学生出来选择的工作和专业无关
首页 > 专业知识

经常用到的PHP正则表达达式

时间:2018-03-19 18:05:17 [来源]:郑州PHP培训学校

   经常用到的PHP正则表达达式

  介绍
  正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,php等等,我今天就把我对正则表达式的理解跟大家唠唠,不当之处,请多多指教!
  需要知道的术语——下面的术语你知道多少?
  定界符;字符域;修饰符;限定符;脱字符;通配符(正向预查,反向预查);反向引用;惰性匹配;注释;零字符宽定位
  我们什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,php在某些方面用正则反而影响效率。当我们遇到复杂文本数据的解析时候,用正则是比较好的选择。
  优点
  正则表达式在处理复杂字符操作的时候,可以提高工作效率,也在一定程度节省你的代码量。
  缺点
  我们在使用正则表达式的时候,复杂的正则表达式会加大代码的复杂度,让人很难理解。所以我们有的时候需要在正则表达式内部添加注释。
  通用模式
  定界符,通常使用 "/"做为定界符开始和结束,也可以使用"#"。
  什么时候使用"#"呢?一般是在你的字符串中有很多"/"字符的时候,因为正则的时候这种字符需要转义,比如uri。
  使用"/"定界符的代码如下.
  $regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';$matches = array();
  if(preg_match($regex, $str, $matches)){
  var_dump($matches);
  }
  echo "\n";
  preg_match中的$matches[0]将包含与整个模式匹配的字符串。
  使用"#"定界符的代码如下.这个时候对"/"就不转义!
  $regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';$matches = array();
  if(preg_match($regex, $str, $matches)){
  var_dump($matches);
  }
  echo "\n";
  修饰符:用于改变正则表达式的行为。
  我们看到的('/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i')中的最后一个"i"就是修饰符,表示忽略大小写,还有一个我们经常用到的是"x"表示忽略空格。
 
  PHP超时处理全面总结
  在PHP开发中工作里非常多使用到超时处理到超时的场合,这些地方都需要考虑超时的设定,但是PHP中的超时都是分门别类,各个处理方式和策略都不同,为了系统的描述,我总结了PHP中常用的超时处理的总结。
  在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景:
  1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现2. 为了保证Web服务器不会因为当个页面处理性能差而导致无法访问其他页面,则会对某些页面操作设置3. 对于某些上传或者不确定处理时间的场合,则需要对整个流程中所有超时设置为无限,否则任何一个环节设置不当,都会导致莫名执行中断4. 多个后端模块(MySQL、Memcached、HTTP接口),为了防止单个接口性能太差,导致整个前面获取数据太缓慢,影响页面打开速度,引起雪崩5. 。。。很多需要超时的场合
  这些地方都需要考虑超时的设定,但是PHP中的超时都是分门别类,各个处理方式和策略都不同,为了系统的描述,我总结了PHP中常用的超时处理的总结。
  【Web服务器超时处理】
  [ Apache ]
  一般在性能很高的情况下,缺省所有超时配置都是30秒,但是在上传文件,或者网络速度很慢的情况下,那么可能触发超时操作。
 
  使用PHP免费发送定时短信
  由于飞信目前没有开发平台,现有API都是第三方开发,貌似是通过破解WAP飞信或者3G飞信,模拟浏览器的行为来发短信。另外Google code上有开源的php飞信发送类php-fetion。这些飞信接口方便了定时短信的开发。
  背景:老妈年纪大了,文化程度不高,但是需要每天了解天气信息才能下地工作,也就无法通过网络获取天气,只能通过电视。于是寻思着自己抓取网络上的天气信息,通过手机短信发送给老妈。
  问题:自己不可能每天定时给老妈发送天气短信,现有的天气预报订阅短信又是要钱的。
  解决:
  免费发送短信到手机
 
  139邮箱也是中国移动的一项业务,提供了邮件短信提醒的功能。只要在邮箱里面设置邮件到达通知就OK了,除了彩信,其他的长短信,普通短信,免提短信都是免费的。注意,时间久了,发件箱和收件箱都要清除一下,以免占用过多空间而影响正常使用。
  另外,只需要编写一个简单的邮件发送的php脚本。而新浪SAE也提供了此Mail服务。使用Mail服务里的函数,可以快速发送邮件,代码如下:
  <?php
  $mail = new SaeMail();
  $ret = $mail->quickSend(
  '收件人@139.com' ,
  '这是主题' ,
  '这是正文' ,
  '这是发件人邮箱' ,
  '这是发件人密码' ,
  '这是smtp服务host' ,
  [这是smpt服务端口] );
  //发送失败时输出错误码和错误信息
  if ($ret === false)
  var_dump($mail->errno(),$mail->errmsg());?>
 

上一篇:PHP系列学习之日期函数

下一篇:PHP常见错误的具体纠正方法