PHP
phphub
做最好的自己!
展开
-
正则表达式学习(一)认识正则表达式
正则表达式一直是我的弱项,平时项目里用到很多时候都是去网上查。所以趁项目完结系统的又重新学习了下。我们来看一个正则表达式:#<div\s+[^>]*>(.*?)<\/div>#i一个完整的正则表达式如上,有三部分组成:分隔符、表达式、修饰符①分隔符除了字母、数字、下划线、空白符以外的任何字符,比如/、#、~、%、@等。比较常用的就是/、#和~,但是为了避免与反斜线混淆,一般不用/。②表达式表达式就是我们所写的匹配规则,由一些特殊字符和非特殊字符组成的。表达式包括元字符、字符组、分支、环视等一原创 2016-09-12 08:50:19 · 471 阅读 · 0 评论 -
正则表达式学习(二)字符组和分支
上篇讲了正则表达式的元字符和量词,对正则表达式也有了一个初步的了解。这篇学习下字符组和分支1.字符组字符组就是用[]来匹配任意一个字符,比如我们想找到包含字符a或u的单词。就可以通过字符组来写规则:#\b[a-z]*[au][a-z]*#i另外字符组里-表示范围,如果要匹配包含-的字符,[]里一定要对-进行转义,即[\-],那像(),{}在[]要不要进行转义呢,答案是不需要,因为在[]里(),{}只是作为普通字符。2.分支比如我们用c[au]t可以匹配cat或cut。那如果我们像匹配包含任意两个原创 2016-09-12 10:26:43 · 390 阅读 · 0 评论 -
正则表达式学习(三)转义和反义
正则表达式的转义和反义,一字之差,概念却是完全不同的。1.转义转义就是使用正则表达式中的一些特殊字符引起歧义的时候,用“\”取消原本的特殊意思,比如如果想匹配*或者?,因为正则表达式里*和?都是元字符,有着特殊的意义,所以如果想匹配这两个字符,需要用\*,\?。又或者匹配常见的url网址,“.”本身有着其特殊的意义,所以这时也需要进行转义\.。那么是不是当出现特殊字符时,都需要进行转义呢?比如这个元字符出现在字符组里,例如[abc(*?{}],其中(,*,{}需要进行转义吗?答案是不需要,因为尽管原创 2016-09-12 11:02:45 · 2017 阅读 · 0 评论 -
正则表达式中的?和?:
有时会看到.*?或者?:\w+的规则,一直不知道是什么意思。后来查了下,搞明白了。1.首先看下.*?举个例子吧还是,比如要去掉一篇文章中的所有script标签及内容。php代码如下:$rule = '#<script[^>]*>.*<\/script>#i';$str = "<script>var test = '测试';alert(test);</script>大难不死!英52岁夫妇海上漂浮7小时后获救</h1><p class='otitle'>你好</p><script>alert('测试一下原创 2016-09-12 11:27:20 · 425 阅读 · 0 评论 -
php调用sphinx
1.sphinx重要的几个方法①setMatchMode ( int $mode )全文检索模式匹配$mode表示匹配模式, 有以下5种匹配模式Constant DescriptionSPH_MATCH_ALL 匹配所有查询关键字,比如你搜索"杭州钢材",那么实际搜索的是同时包含"杭州"和"钢材"两个关键字的文章SPH_MATCH_ANY 匹配任意一个查询关键字,比如你搜索"杭州钢材",那么实际搜索的是包含"杭州"或"钢材"关键字的文章SPH_MATCH_PHRASE 将查询看成一原创 2016-08-26 09:13:34 · 3784 阅读 · 0 评论 -
全文检索的实现方式
近段时间公司项目的需要,需要对新闻资讯进行全文检索。新闻资讯总的访问量是日pv1000万,这其中有点水分,有些是爬虫爬的。历史数据量大概是500万+,性能要求支持400个并发请求。页面加载速度需要在1.5秒内加载完毕。所以针对全文检索这块一开始考虑到使用sphinx或者lucence。最终选择了sphinx,一是它的配置相对来说简单,另外它的效率比较高。但是它对中文的分词支持不太好,google了下,基于sphinx的coreseek和sphinx for chinese在中文检索方面还是不错的。但是c原创 2016-08-25 16:19:15 · 4093 阅读 · 0 评论