武汉PHP培训
达内武汉民大中心

18062071755

热门课程

PHP 优化写法之字符串

  • 时间:2018-09-20 16:45
  • 发布:武汉php培训
  • 来源:互联网

1.少用正则表达式

能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。

没得说,正则最耗性能。

武汉php培训

str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。

有没有你漏掉的好用的函数?

例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。

2.字符替换

如果需要转换的全是单个字符,用字符串作为 strtr() 函数完成替换,而不是数组:

$addr = strtr($addr, "abcd", "efgh"); // 建议

$addr = strtr($addr, array('a' => 'e', )); // 不建议

效率提升:10 倍。

str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4。

另外,不要做无谓的替换,即使没有替换,str_replace也会为其参数分配内存。很慢!

用 strpos 先查找(非常快),看是否需要替换,如果需要,再替换。

如果需要替换,效率几乎相等,差别在 0.1% 左右。

如果不需要替换:用 strpos 快 200%。

3.压缩大的字符串

使用 gzcompress() 和 gzuncompress() 对容量大的字符串进行压缩和解压,再存入和取出数据库。

这种内置的函数使用gzip算法,能压缩字符串90%。

4.echo 输出

echo 字符串用逗号代替点连接符更快些。

虽然,echo是一种语言结构,不是真正的函数。

但是,它可以把逗号隔开的多个字符串当作“函数”参数传入,所以速度会更快。

echo $str1, $str2; // 速度快

echo $str1 . $str2; // 速度稍慢

5.尽量用单引号

PHP 引擎允许使用单引号和双引号来封装字符串变量,但是它们的速度是有很大的差别的!

使用双引号的字符串会告诉 PHP 引擎,首先去读取字符串内容,查找其中的变量,并改为变量对应的值。

一般来说字符串是没有变量的,使用双引号会导致性能不佳。

最好使用字符串连接,而不是双引号字符串。

$output = "This is a plain string"; // 不好的实践

$output = 'This is a plain string'; // 好的实践

$type = "mixed"; // 不好的实践

$output = "This is a $type string";

$type = 'mixed'; // 好的实践

$output = 'This is a ' . $type . ' string';

6.使用isset代替strlen

在检验字符串长度时,我们第一想法会使用 strlen() 函数。

此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。

但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化、哈希查找,会跟随被调用的函数一起执行。

在某些情况下,你可以使用 isset() 技巧加速执行你的代码。例如:

if (strlen($foo) < 5) {

echo "Foo is too short";

}

// 使用isset()

if (!isset($foo{5})) {

echo "Foo is too short";

}

7.用split分割字符串

在分割字符串时,split()要比explode()快。

split()

0.001813 - 0.002271 seconds (avg 0.002042 seconds)

explode()

0.001678 - 0.003626 seconds (avg 0.002652 seconds)

8.echo效率高于print

因为echo没有返回值,print返回一个整型。

注意:echo输出大字符串的时候,如果没有调整就会严重影响性能。

打开Apache的mod_deflate进行压缩,或者打开ob_start将内容放进缓冲区,可以改善性能问题。

本篇文章是有武汉PHP培训为您呈现,希望给您带来更多更好的文章,更多相关资讯,请扫描下方二维码

武汉PHP培训

马上预约七天免费试听课

姓名:

电话:

上一篇:CodeIgniter的优缺点
下一篇:简介Zend Framework

达内与广西城市职业学院(本科)携手签约,共同培育技术技能型人才!

2018百度品牌数字资产榜揭晓,达内教育、可口可乐、海尔等上榜

校企融合达内携手宁夏财经职业技术学院联合培养高质量技能型人才

达内与浙江广厦建设职业技术学院携手签约,共建达内学院!

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊