应该选什么样的php框架来学习呢

php日记 6 Comments

写了一阵子php,感觉应该很多代码是重复的,于是无意中看到thinkphp,对于php框架就有点好奇了
再百度一下发现,还有一个php框架: fleaphp,两个框架对比来看,
fleaphp要比thinkphp成熟点,至少你能看见各种各样的应用。而且貌似文档方面比较完备,我估计学习上会得到不少帮助。但是,他们居然已经开始开发另外一个框架qeephp,不得不让我有点犹豫,显然他们开发fleaphp到现在遇到了比较大的困难,正像他们说的,由于老版本的限制,以及兼容php4的考虑,束缚了他们后续的开发,虽然他们说继续进行fleaphp的开发,然则我认为只是进行了bug修补工作也不定。以上纯属猜测。
至于thinkphp,我就觉得他太年轻,出来时间比较短,应用方面不是很多,最主要是我感觉文档太少,但是我感觉他有一些独特的特性值得一看

犹豫啊,,,,花了时间,希望能有收获。
我就是希望自己能开发一些比较小的应用web就可以了,比如一般的小的商店,小的社区,小的博客,小的论坛
呵呵,什么都是小巧而强壮的,就够了。不以新浪那样的大站为目标,呵呵。

罗嗦了半天,真希望有过来人指点一下。。。

获取当前php运行脚本所在目录

php技巧 1 Comment

怎么样知道,当前运行脚本所在目录呢,逛了一圈,找到个比较有用的函数,呵呵

1
2
 $patharray = pathinfo($_SERVER['PHP_SELF']);
 echo $patharray['dirname'];

pathinfo返回的是一个数组

大概返回是这个样子:

[dirname] => /abc/123

 [basename] => xxx.php

[extension] => php

结果很爽

实际上有些cms对url的处理的就是运用了pathinfo,回头我得好好研究

 

 

php 截取字符串(php 截取中文字符串也适用)函数

php技巧 1 Comment

php 截取字符串常规的截取函数是:substr(string, start int, end int);
这个substr()函数有两点说明
1.没法截取中文。
2.substr()字符串截取函数 end int参数可以超出string的实际范围,它会返回字符串最长部分,而不会有多余字符。
麻烦的中文又有gb2312,gbk,utf-8的编码分别,这样php 截取中文字符串要自己写函数
我搜索到了下面的php函数,用来截取中文字符串还是挺满意的,感谢作者,就是日子太久实在不知道谁写的了。

1
2
3
4
5
6
7
8
9
10
11
12
13
function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) //各种编码的切割函数
{
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset);
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
if($suffix) return "...".$slice."…";
return $slice;
}

php字符串替换函数strtr str_replace preg_replace效率对比

php技巧 No Comments

前面一篇具体说了strtr这个函数的使用注意点,同时我知道有人说strtr比str_replace快4倍
然而我测试得到结果却是让人失望
strtr在strtr(string,array)用法的时候,它比str_replace更慢些。
10w次的两个词替换结果表明
str_replacece 耗时0.38 sec.
strtr 耗时0.52sec.
preg_replace 耗时0.97sec.

不需要测试都应该知道preg_replace肯定最慢

只是两个语句的执行

1
2
$str_replace_str = str_replace('喜欢','非常喜欢',$str);
$str_replace_str = str_replace('奥运','北京',$str_replace_str);

却要比一句的

1
$strtr_str = strtr($str,array('喜欢'=>'非常喜欢','奥运'=>'北京'));

的速度还快

ps:被替换的句子

1
$str = '我喜欢运动,我喜欢奥运,我更喜欢参加奥运,欢迎喜欢奥运的人齐聚北京!';

但是,strtr在strtr(string,from,to)这样的用法下仍然是最快的,只不过,没法常用罢了。

php 字符串替换函数 strtr浅谈

php技巧 No Comments

先来看看这个php字符串替换函数 strtr()的两种状态

strtr(string,from,to)
或者strtr(string,array)

首先针对strtr函数第一种方式
我们看看下面的举例:

1
2
3
<?php
echo strtr("I Love you","Lo","lO");
?>

得到的结果是

1
 I lOve yOu

这个结果提醒我们
1.strtr它是区分大小写的
2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意

再举一个特殊例子,说明这个php sttr函数的怪异

1
2
3
<?php
echo strtr("I Love you","Love","");
?>

结果是

1
I Love you

什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。

再次举例strtr函数的另一种情况

1
2
3
<?php
echo strtr("I Loves you","Love","lOvEA");
?>

结果是

1
I lOvEs yOu

注意看第三个参数的A,在结果中并没有出现
4.我不建议用strtr以少换多

ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快
据说,strtr 比 str_replace 快四倍
所以
5.能用strtr函数的时候一定要用

那怎么用才舒服?
这就是它的第二种情况
strtr(string,array)
6.strtr符合意愿的使用方法

1
2
3
4
<?php
$table_change = array('you'=>'her sister');
echo strtr("I Love you",$table_change);
?>

结果为
I Love her sister

7.小技巧:你想到替换什么你就往数组加什么
比如

1
2
3
4
5
<?php
$table_change = array('you'=>'her sister');
$table_change += array('Love' => 'hate');
echo strtr("I Love you",$table_change);
?>

结果是
I hate her sister

再次提醒那个Love 写成love 是行不通的哦。

ok,乱七八糟说了一通,其实关于strtr最想说的就是这个后面的用法了
简单方便。
貌似后面的用法也忽略掉了前后字符长度不同的问题

以上php strtr函数实验,PHP5.2 测试通过。

Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress and Free WordPress Themes
Entries RSS Comments RSS Log in