网站开发遇到的问题
1.字符串的过滤
在做数据处理的时候需要把给定的字符过滤出来,使用到了strpos()函数,该函数返回字符串在另一个字符串中第一次出现的位置,若无记录返回false。
但是有个问题,就是如果要查找的字符串是目标字符串的开头,如:
<?php echo strpos("Hello world!","He"); //注意!该函数区分大小写 ?>
以上代码返回的是数字“0”,但是若使用IF做判断却无法达到目的,如下:
1 <?php 2 if(strpos("Hello world!","He")==false){ 3 echo "找不到!"; //输出 4 } 5 if(strpos("Hello world!","He")==0){ 6 echo "找到了!"; //还输出 7 } 8 ?>
解决办法参考第二条!
2.全等号的问题
全等号是神马东西?相信许多学习PHP的童鞋会比较陌生吧。全等号在PHP于艳丽表达为“===”,即三个等号连接起来,他也表示等于号,但是和我们常用的“==”有什么区别呢?
其实很简单,全等号不仅比较的是数值,还会比较数据的类型。具体代码就不列出了。请大家记住以下表达式的值就行了:
0== flase -> true 0=== flase -> false 2== true -> true 2=== true -> false
第一条的解决方法就是:
1 <?php 2 if(strpos("Hello world!","He")===false){ 3 echo "找不到!"; //不输出 4 } 5 if(strpos("Hello world!","He")===0){ 6 echo "找到了!"; //输出 7 } 8 ?>
3.sqlite的功与过
我所在的公司使用的是sqlite数据库,熟悉数据库的人都知道,sqlite数据库属于短小精悍型的,有点我就不一一列举了,但在使用它的时候遇到了不少问题。
sqlite版本问题:group_concat()函数是sql中比较实用的函数了,但是我在Navicat for SQLite中运行起来总是提示逻辑或数据库错误。。。最后发现低版本的sqlite不支持这函数,解决办法要么升级数据库,要么使用PHP语句实现行转列的功能。最后我使用的方法为后者,因为如果升级数据库的话,使用以前的数据库操作类就要重新写一遍。。。很是郁闷啊。
想使用sqlite的全文检索的童鞋也要注意,sqlite的虚拟表必须使用sqlitev3版本才行,所以下次在使用sqlite前,一定要选好版本!!!