以前我们写过一个 HP通过链式操作将数据输出excel(csv)格式,最近项目又要导出excel,由于项目中要导出excel的地方太多,因此写个类便于管理使用。
PHP识别用户上传的色情图片并防止实例
本实例教程我们来学习一下如何用PHP识别用户上传的成人照片或者裸图,其原理就是分析一张图片的颜色是否和人类皮肤颜色大面积相似。
我在phpclasses.org上面偶然发现一个很有用的,由Bakr Alsharif开发的可以帮助开发者基于皮肤像素点来检测图片裸照的类文件.
yii2框架dropDownList的下拉菜单用法介绍
dropDownList是yii框架中一个自带的下拉功能了解,我们可以直接使用dropDownList来实现html的select菜单,下面一起来看看。
Yii2.0 默认的 dropdownlist 的使用方法.
yii框架中session的使用方法详解
yii框架中session与php中的session使用是不一样的在yii中session己封装成了一个类了,我们可以直接使用并且进行session创建,删除与取值操作,具体如下。
HP通过链式操作将数据输出excel(csv)格式
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的。现在我们来学习用PHP链式操作输出excel(csv)格式。
php实现utf-8转unicode函数代码实例
最近做的项目要实现跨平台,项目用的是utf-8的编码,由于在操作过程中出现各种编码问题,于是就把utf-8编码转成能够使计算机实现跨语言、跨平台的文本转换及处理的unicode编码。
使用PHP原生函数就一定比自定义函数快吗?
之前听到过的一个前辈关于php性能优化的说法——PHP为我们提供了那么多的原声函数,我们尽量用原生函数解决问题。但是有时在想,php原生态的函数就一定快吗?现在看到一个国外的人写的函数,就来测试一下。
关于正则表达式个人理解的总结
初学正则表达式的时候都有一个疑问,例如:需要匹配串 "_abc_123_" 中 第一对"_"之间的字符,刚开始学习正则表达式的时候会写成 "/_w*_/",匹配的结果就是"abc_123" 而不是"abc"了;大神说加上一个问号,"/_w*?_/",这时候匹配的结果就是"abc"。
我们知道'?'单独使用的时候表示:重复零次或一次,而当'?'出现在重复限定符后面的,起的作用就是懒惰匹配,也就是匹配尽可能少的字符。懒惰限定符说明:
*?:重复任意次,但尽可能少重复
+?:重复1次或更多次,但尽可能少重复
??:重复0次或1次,但尽可能少重复
{n,m}?:重复n到m次,但尽可能少重复
{n,}?:重复n次以上,但尽可能少重复
对的,“尽可能少重复”,这就是对懒惰匹配的粗暴直白的解说。
那么怎么理解“尽可能少重复”呢?我们可以从正则表达式的忽略优先量词来解释了。
忽略优先量词
量词"*?"、"+?"、"??"、"{n,m}?"、"{n,}?"都属于忽略优先量词,忽略优先量词使用的是在?、+、*、{}后面添加?组成的,忽略优先在匹配的时候首先会尝试忽略,如果失败后回溯才会选择尝试。比如`ab??`匹配“abb”会得到‘a’而不是“ab”。当引擎匹配成功a后,由于是忽略优先,引擎首先选择不匹配b,继续查看表达式,发现表达式结束了,那么引擎就直接上报匹配成功。具体我们通过下面的例子一步一步说明忽略优先量词工作原理。
例子
还是上面的例子,用"/_w*?_/"匹配"_abc_123_" 中 第一对"_"之间的字符。
开始匹配第一个'_'之后,‘w*?’首先决定不需要匹配任何字符,因为它是忽略优先量词,这时候就拿表达式'/_w*?_/'中的第二个'_'('w*?'后面的'_')和目标串'_abc_123_'中的'a'匹配,匹配失败,这时候才会拿'w*?'去尝试未匹配的分支(使用w匹配a,尝试匹配a成功)
下一步,是尝试匹配,还是忽略呢?因为'w*?'是忽略优先量词,会选择忽略,那么就是重复上一步,'_'匹配b失败,'w*?'去尝试未匹配的分支ab,以上步骤总共重复了3次后(直到表达式'w*?'后面的'_'和目标串第二个'_'匹配),最终匹配出'abc'。
过程(开始匹配第一个'_'之后):
表达式/_w*?_/'中的第二个'_'和目标串'_abc_123_'中的'a'匹配,匹配失败,'w*?'尝试匹配目标串'_abc_123_'中的'a',匹配成功。
表达式/_w*?_/'中的第二个'_'和目标串'_abc_123_'中的'b'匹配,匹配失败,'w*?'尝试匹配目标串'_abc_123_'中的'ab',匹配成功。
表达式/_w*?_/'中的第二个'_'和目标串'_abc_123_'中的'c'匹配,匹配失败,'w*?'尝试匹配目标串'_abc_123_'中的'abc',匹配成功。
表达式/_w*?_/'中的第二个'_'和目标串'_abc_123_'中的'_'匹配,匹配成功,匹配结束。结果为abc。
以上是阅读《精通正则表达式》关于忽略优先量词一节的想法,如有不对虚心接受各位的指教,谢谢!
总结:当正则表达式和字符串函数都能解决问题时,一定要使用字符串函数,这样不容易出错,最重要的是字符串函数比正则表达式实现性能上要好得多。
yii生成sql语句操作数据库实例
yii框架是一个国外非常火爆的框架了,下文我们一起来看看yii生成sql语句操作数据库的简单例子,如果各位对此例子有兴趣可以进入参考一下吧。
yii框架使用原生态的sql语句也是可以对数据库进行操作的,以下就是详细的操作代码,很详细:
CI框架中PHP正则(不用转义)做法
PHP正则表达式在碰到要与正则相同的字符串时我们需要转义了,下面小编修改了CI框架中PHP正则之后我们再使用时不需要转义了可以直接使用,具体如下。
php pdo连接报错Connection failed: SQLSTATE[HY000] [2002]
错误
Connection failed: SQLSTATE[HY000] [2002] No such file or directory
ci框架中cookie的操作程序代码
cookie在php中本身就很好使用了,直接使用setcookie就可以操作了,那么在ci中如何使用cookie呢?下面就和php入门小伙伴一起来看看
例子自定义扩展核心控制器类