<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[phphub的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/phphub</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; phphub]]></copyright><item><title><![CDATA[正则表达式中的?和?:]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52512033</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52512033</guid><author>phphub</author><pubDate>Mon, 12 Sep 2016 11:27:20 +0800</pubDate><description><![CDATA[有时会看到.*?或者?:\w+的规则，一直不知道是什么意思。后来查了下，搞明白了。
1.首先看下.*?
举个例子吧还是，比如要去掉一篇文章中的所有script标签及内容。php代码如下：
$rule = '#<script[^>]*>.*<\/script>#i';
$str = "<script>var test = '测试';alert(test);</script>大难不死！英52岁夫妇海上漂浮7小时后获救</h1><p class='otitle'>你好</p><script>alert('测试一下]]></description><category></category></item><item><title><![CDATA[正则表达式学习(三)转义和反义]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52511746</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52511746</guid><author>phphub</author><pubDate>Mon, 12 Sep 2016 11:02:45 +0800</pubDate><description><![CDATA[正则表达式的转义和反义，一字之差，概念却是完全不同的。
1.转义
转义就是使用正则表达式中的一些特殊字符引起歧义的时候，用“\”取消原本的特殊意思，比如如果想匹配*或者?，因为正则表达式里*和?都是元字符，有着特殊的意义，所以如果想匹配这两个字符，需要用\*，\?。又或者匹配常见的url网址，“.”本身有着其特殊的意义，所以这时也需要进行转义\.。
那么是不是当出现特殊字符时，都需要进行转义呢？
比如这个元字符出现在字符组里，例如[abc(*?{}]，其中(，*，{}需要进行转义吗？
答案是不需要，因为尽管]]></description><category></category></item><item><title><![CDATA[正则表达式学习(二)字符组和分支]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52511312</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52511312</guid><author>phphub</author><pubDate>Mon, 12 Sep 2016 10:26:43 +0800</pubDate><description><![CDATA[上篇讲了正则表达式的元字符和量词，对正则表达式也有了一个初步的了解。这篇学习下字符组和分支
1.字符组
字符组就是用[]来匹配任意一个字符，比如我们想找到包含字符a或u的单词。就可以通过字符组来写规则：
#\b[a-z]*[au][a-z]*#i
另外字符组里-表示范围，如果要匹配包含-的字符，[]里一定要对-进行转义，即[\-]，那像(),{}在[]要不要进行转义呢，答案是不需要，因为在[]里(),{}只是作为普通字符。
2.分支
比如我们用c[au]t可以匹配cat或cut。那如果我们像匹配包含任意两个]]></description><category></category></item><item><title><![CDATA[正则表达式学习(一)认识正则表达式]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52510498</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52510498</guid><author>phphub</author><pubDate>Mon, 12 Sep 2016 08:50:19 +0800</pubDate><description><![CDATA[正则表达式一直是我的弱项，平时项目里用到很多时候都是去网上查。所以趁项目完结系统的又重新学习了下。
我们来看一个正则表达式：
#<div\s+[^>]*>(.*?)<\/div>#i

一个完整的正则表达式如上，有三部分组成：分隔符、表达式、修饰符
①分隔符
除了字母、数字、下划线、空白符以外的任何字符，比如/、#、~、%、@等。比较常用的就是/、#和~，但是为了避免与反斜线混淆，一般不用/。
②表达式
表达式就是我们所写的匹配规则，由一些特殊字符和非特殊字符组成的。表达式包括元字符、字符组、分支、环视等一]]></description><category></category></item><item><title><![CDATA[新闻数据分页查询的优化]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52493228</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52493228</guid><author>phphub</author><pubDate>Sat, 10 Sep 2016 10:09:52 +0800</pubDate><description><![CDATA[关于分页的优化相信很多博客里都有描述，原理都是一样的。比如大多数举的例子：
select * from t1 limit 10000,10;可以转换成
select * from t1 where id>=(select id from t1 limit 10000,1) limit 10;

id为主键，这样直接先查id，因为是索引覆盖的查询方式，所以很快。
但是根据id有一个问题，如果你的主键id不是自增的，或者中间有很多数据被删除了，然后又插入了新的数据。这样自增的顺序可能会被打乱，再这样去查询会不会]]></description><category></category></item><item><title><![CDATA[mysql中int类型的宽度M解析]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52492795</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52492795</guid><author>phphub</author><pubDate>Sat, 10 Sep 2016 09:36:18 +0800</pubDate><description><![CDATA[一直以来在MYSQL建表的时候都有一个困惑，那就是关于int类型。int(M)这个M代表什么？
比如我定义一个文章的主键news_id为int(8)为什么要定义为8？如果我存储一个位数为10的数3445667788，发现实际也是可以存储的。于是查看mysql的手册，发现有这样一段话：M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。]]></description><category></category></item><item><title><![CDATA[php调用sphinx]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52325094</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52325094</guid><author>phphub</author><pubDate>Fri, 26 Aug 2016 09:13:34 +0800</pubDate><description><![CDATA[1.sphinx重要的几个方法
①setMatchMode ( int $mode )全文检索模式匹配
$mode表示匹配模式， 有以下5种匹配模式
Constant	Description
SPH_MATCH_ALL	匹配所有查询关键字，比如你搜索"杭州钢材"，那么实际搜索的是同时包含"杭州"和"钢材"两个关键字的文章
SPH_MATCH_ANY	匹配任意一个查询关键字，比如你搜索"杭州钢材"，那么实际搜索的是包含"杭州"或"钢材"关键字的文章
SPH_MATCH_PHRASE        将查询看成一]]></description><category></category></item><item><title><![CDATA[全文检索的实现方式]]></title><link>https://blog.youkuaiyun.com/phphub/article/details/52315766</link><guid>https://blog.youkuaiyun.com/phphub/article/details/52315766</guid><author>phphub</author><pubDate>Thu, 25 Aug 2016 16:19:15 +0800</pubDate><description><![CDATA[近段时间公司项目的需要，需要对新闻资讯进行全文检索。
新闻资讯总的访问量是日pv1000万，这其中有点水分，有些是爬虫爬的。历史数据量大概是500万+，性能要求支持400个并发请求。页面加载速度需要在1.5秒内加载完毕。
所以针对全文检索这块一开始考虑到使用sphinx或者lucence。最终选择了sphinx，一是它的配置相对来说简单，另外它的效率比较高。但是它对中文的分词支持不太好，google了下，基于sphinx的coreseek和sphinx for chinese在中文检索方面还是不错的。但是c]]></description><category></category></item></channel></rss>