str_replace vs preg_replace

转自:http://benchmarks.ro/2011/02/str_replace-vs-preg_replace/

事实证明str_replace确实比preg_replace快。

If you find yourself handling strings and replacing sub-strings within them you want to make sure that you are using the fastest way possible to do it.
In order to help you we ran tests using an average length string (50k characters) and 100*1000 test runs.
After running these tests we concluded that str_replace is faster thanpreg_replace when it comes to simple replace rules, these being our results for two separate full test runs:

Time for str_replace: 2.2866821289062 seconds
Time for preg_replace: 2.9614992141724 seconds

Time for str_replace: 2.471617937088 seconds
Time for preg_replace: 3.2965259552002 seconds

You can see the code we used for benchmarking below:

<?php

//Build string to be used
$max_elements=50000; $max_runs=100;

$test_string=‘‘;
for($i=0;$i<$max_elements;$i++)    $test_string.=chr(rand(32,127));

function test_str_replace()
{
global $test_string,$max_runs;
for($i=0;$i<$max_runs;$i++)    $test_string=str_replace(‘ ‘,‘ ‘,$test_string);
}

function test_preg_replace()
{
global $test_string,$max_runs;
for($i=0;$i<$max_runs;$i++)    $test_string=preg_replace("/[ ]/",‘ ‘,$test_string);
}

$time = microtime(true);
for($i=0;$i<$max_runs;$i++) test_str_replace();
$time = microtime(true) - $time;
echo "Time for str_replace: {$time} seconds<br>\n";

$time = microtime(true);
for($i=0;$i<$max_runs;$i++) test_preg_replace();
$time = microtime(true) - $time;
echo "Time for preg_replace: {$time} seconds<br>\n";

?>
时间: 2024-10-15 14:22:36

str_replace vs preg_replace的相关文章

php字符串替换函数str_replace速度比preg_replace快

php里字符串替换的函数,有str_replace().str_ireplace().substr_replace(). preg_replace().strtr()等几个,程序员在写程序的时候,往往会根据自己的习惯以及实际情况选用其中一个或多个.这几个函数虽然都有字符串替换的功能,但它们无论从语法到作用,还是速度和效率上都有所不同,所以并非在任何场合都可以使用它们. str_replace()与preg_replace()的区别 在字符串替换的函数里,str_replace()的使用率是最高的

关于PHP开发的9条建议

这篇文章主要介绍了关于PHP开发的9条建议,都是个人的一些经验总结,有需要的小伙伴可以参考下. 本文只是个人从实际开发经验中总结的一些东西,并不是什么名言警句,写出来有两个目的:一是时刻提醒自己要按照这些知识点来写自己代码,二是为了分享,说不定对你有用呢?万一,是吧... 1.首要意识:安全 大多数时候,我们开发的Web程序都是需要跟数据库打交道的,所以这里几乎可以说SQL注入是一个怎么也无法避免要拿出来讨论一下的问题.而且近年 来像XSS和CSRF攻击也变得大行其道,使得"黑客"们貌

提高php代码质量 36计

1.不要使用相对路径 常常会看到: ? 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: ? 1 2 3 4 define('ROOT' , '/var/www/project/'); re

提高PHP代码质量的36个技巧

 1.不要使用相对路径 常常会看到: 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: 1 2 3 define('ROOT' , '/var/www/project/'); requi

php 匹配替换中文

1.匹配中文 $str = "中文"; preg_match_all("/[\x{4e00}-\x{9fa5}]+/u",$str,$match); 2.替换中文: 在所在的php文件里,要加上 mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); 这样才能支持多字节进行模式匹配.详细介绍:http://blog.chinaunix.net/uid-2027980

提高 PHP 代码质量的 36 种方法

1.不要使用相对路径 常常会看到: 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: 1 2 3 4 define('ROOT' , '/var/www/project/'); requir

提高PHP编码的一些技巧

1.不要使用相对路径 例如 require_once('../../lib/some_class.php'); 该方法有很多缺点: 1)它首先查找指定的php包含路径, 然后查找当前目录 2)如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录 3)当定时任务运行该脚本, 它的上级目录可能就不是工作目录了 因此正确的写法是: define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); require_once(ROOT . '.

php 空格无法替换,utf-8空格惹的祸

一次坑爹的小bug.读取一段文字(编码utf-8),想替换掉空格,str_replace(" "..).preg_replace("/\s/"..)都不起作用. <?php // 替换<p>后4个空格 $str = file_get_contents("http://m.ts.cn/new/99cms_ts/api.php?s=/News/getNewsInfoTmp/Nid/51089"); $str = str_replac

php采集windows 10 app的信息

<?php /** * test new page crawler */ #$url = 'http://apps.microsoft.com/windows/en-us/app/fotor/6f797ba2-500d-4dee-9c5a-13c2d818c958'; $url = 'https://www.microsoft.com/en-us/store/apps/adobe-photoshop-express/9wzdncrfj27n'; $url = trim($url); $d = a