I added this article because when I was only trying to look up how to do this, this nut "the Storyteller" went and carried out a benchmark test on the most popular ways of counting the occurrence of a specific word within a string of text.
Source: http://hasin.wordpress.com/2007/04/30/c … functions
<? function microtime_float() { list($usec, $sec) = explode(“ ”, microtime()); return ((float)$usec + (float)$sec); } $str = “I have three PHP books, first one is ’PHP Tastes Good’, next is ’PHP in your breakfast’ and the last one is ’PHP Nightmare’”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { $cnt = count(split(“PHP”,$str))-1; } $end = microtime_float(); echo “Count by Split+Count took : ”.($end-$start).“Seconds”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { preg_match_all(“/php/i”,$str,$matches); $cnt = count($matches[0]); } $end = microtime_float(); echo “Count by Preg_Match+Count took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { str_replace(“PHP”,“PP”,$str,$cnt); //echo $cnt; } $end = microtime_float(); echo “Count by str_replace took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { str_ireplace(“PHP”,“PP”,$str,$cnt); //echo $cnt; } $end = microtime_float(); echo “Count By str_ireplace took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { $cnt = count(explode(“PHP”,$str))-1; //echo $cnt; } $end = microtime_float(); echo “Count By Explode+Count took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { $word_count = (array_count_values(str_word_count(strtolower($str),1))); ksort($word_count); $cnt = $word_count['php']; } $end = microtime_float(); echo “Count By Array Functions took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { $cnt = count(preg_split(“/PHP/i”,$str))-1; } $end = microtime_float(); echo “Count By preg_split+Count took : ”.($end-$start).“ Seconds\n”; $start = microtime_float(); for ($i=0; $i<10000; $i++) { $cnt = substr_count($str, “PHP”); } $end = microtime_float(); echo “Count By substr_count took : ”.($end-$start).“ Seconds\n”; ?>
- <?
- function microtime_float() {
- list($usec, $sec) = explode(“ ”, microtime());
- return ((float)$usec + (float)$sec);
- }
- $str = “I have three PHP books, first one is ’PHP Tastes Good’, next is ’PHP in your breakfast’ and the last one is ’PHP Nightmare’”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++) {
- $cnt = count(split(“PHP”,$str))-1;
- }
- $end = microtime_float();
- echo “Count by Split+Count took : ”.($end-$start).“Seconds”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- preg_match_all(“/php/i”,$str,$matches);
- $cnt = count($matches[0]);
- }
- $end = microtime_float();
- echo “Count by Preg_Match+Count took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- str_replace(“PHP”,“PP”,$str,$cnt);
- //echo $cnt;
- }
- $end = microtime_float();
- echo “Count by str_replace took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- str_ireplace(“PHP”,“PP”,$str,$cnt);
- //echo $cnt;
- }
- $end = microtime_float();
- echo “Count By str_ireplace took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- $cnt = count(explode(“PHP”,$str))-1;
- //echo $cnt;
- }
- $end = microtime_float();
- echo “Count By Explode+Count took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- $word_count = (array_count_values(str_word_count(strtolower($str),1)));
- ksort($word_count);
- $cnt = $word_count['php'];
- }
- $end = microtime_float();
- echo “Count By Array Functions took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- $cnt = count(preg_split(“/PHP/i”,$str))-1;
- }
- $end = microtime_float();
- echo “Count By preg_split+Count took : ”.($end-$start).“ Seconds\n”;
- $start = microtime_float();
- for ($i=0; $i<10000; $i++)
- {
- $cnt = substr_count($str, “PHP”);
- }
- $end = microtime_float();
- echo “Count By substr_count took : ”.($end-$start).“ Seconds\n”;
- ?>
And the result is
First Run
- Count by Split+Count took : 0.44112181663513 Seconds
- Count by Preg_Match+Count took : 0.46423101425171 Seconds
- Count by str_replace took : 0.23512482643127 Seconds
- Count By str_ireplace took : 0.39766597747803 Seconds
- Count By Explode+Count took : 0.25045800209045 Seconds
- Count By Array Functions took : 1.1077101230621 Seconds
- Count By preg_split+Count took : 0.30741000175476 Seconds
- Count By substr_count took : 0.21060705184937 Seconds
Second Run
- Count by Split+Count took : 0.68125295639038 Seconds
- Count by Preg_Match+Count took : 0.60020899772644 Seconds
- Count by str_replace took : 0.2877471446991 Seconds
- Count By str_ireplace took : 0.47500586509705 Seconds
- Count By Explode+Count took : 0.31055402755737 Seconds
- Count By Array Functions took : 1.3551599979401 Seconds
- Count By preg_split+Count took : 0.40205383300781 Seconds
- Count By substr_count took : 0.24432802200317 Seconds
Third Run
- Count by Split+Count took : 0.50134515762329 Seconds
- Count by Preg_Match+Count took : 0.53588891029358 Seconds
- Count by str_replace took : 0.25469994544983 Seconds
- Count By str_ireplace took : 0.34696006774902 Seconds
- Count By Explode+Count took : 0.23176002502441 Seconds
- Count By Array Functions took : 1.0504789352417 Seconds
- Count By preg_split+Count took : 0.28686618804932 Seconds
- Count By substr_count took : 0.20796585083008 Seconds
Fourth Run
- Count by Split+Count took : 0.4736020565033 Seconds
- Count by Preg_Match+Count took : 0.48813104629517 Seconds
- Count by str_replace took : 0.29280996322632 Seconds
- Count By str_ireplace took : 0.51396799087524 Seconds
- Count By Explode+Count took : 0.34470105171204 Seconds
- Count By Array Functions took : 1.4177949428558 Seconds
- Count By preg_split+Count took : 0.36489319801331 Seconds
- Count By substr_count took : 0.27841401100159 Seconds
If you are interested to know the machine configuration, these tests ran on a Celeron 1.6GHz processor based laptop with 768 MB of RAM. And I am using PHP 5.1.1
Source: http://hasin.wordpress.com/2007/04/30/c … functions