<?php
class replacer {
var $vars = array(
'{TEXT1}' => 'This is text label #1',
'{TEXT2}' => 'This is text label #2',
'{TEXT3}' => 'This is text label #3',
'{TEXT4}' => 'This is text label #4',
'{TEXT5}' => 'This is text label #5',
'{TEXT6}' => 'This is text label #6',
'{TEXT7}' => 'This is text label #7',
'{TEXT8}' => 'This is text label #8',
'{TEXT9}' => 'This is text label #9',
'{TEXT10}'=> 'This is text label #10',
'{TEXT11}'=> 'This is text label #11',
'{TEXT12}'=> 'This is text label #12',
'{TEXT13}'=> 'This is text label #13',
'{TEXT14}'=> 'This is text label #14',
'{TEXT15}'=> 'This is text label #15',
'{TEXT16}'=> 'This is text label #16',
'{TEXT17}'=> 'This is text label #17',
'{TEXT18}'=> 'This is text label #18',
'{TEXT19}'=> 'This is text label #19',
'{TEXT20}'=> 'This is text label #20',
'{TEXT21}'=> 'This is text label #21',
'{TEXT22}'=> 'This is text label #22',
'{TEXT23}'=> 'This is text label #23',
'{TEXT24}'=> 'This is text label #24',
'{TEXT25}'=> 'This is text label #25',
'{TEXT26}'=> 'This is text label #26',
'{TEXT27}'=> 'This is text label #27',
'{TEXT28}'=> 'This is text label #28',
'{TEXT29}'=> 'This is text label #29',
'{TEXT30}'=> 'This is text label #30'
);
var $search;
var $replace;
function replacer(){
$this->search = array_keys($this->vars);
$this->replace = array_values($this->vars);
}
function pcb_replace( $tpl ){
return preg_replace_callback('~(\{[a-z0-9]+\})~i', array(&$this,'_cback'), $tpl);
}
function _cback( $match ){
return $this->vars[$match[1]];
}
function str_replace( $tpl ){
return str_replace($this->search, $this->replace, $tpl);
}
}
function getmicrotime(){
list($usec, $sec) = explode(' ',microtime());
return ((float)$usec + (float)$sec);
}
$tpl_a = array(
"bla-bla-bla-la Replace string label: {TEXT1}",
"bla-bla-bla-la Replace string label: {TEXT2}",
"bla-bla-bla-la Replace string label: {TEXT3}",
"bla-bla-bla-la Replace string label: {TEXT4}",
"bla-bla-bla-la Replace string label: {TEXT5}",
"bla-bla-bla-la Replace string label: {TEXT6}",
"bla-bla-bla-la Replace string label: {TEXT7}",
"bla-bla-bla-la Replace string label: {TEXT8}",
"bla-bla-bla-la Replace string label: {TEXT9}",
"bla-bla-bla-la Replace string label: {TEXT10}",
"bla-bla-bla-la Replace string label: {TEXT11}",
"bla-bla-bla-la Replace string label: {TEXT12}",
"bla-bla-bla-la Replace string label: {TEXT13}",
"bla-bla-bla-la Replace string label: {TEXT14}",
"bla-bla-bla-la Replace string label: {TEXT15}",
"bla-bla-bla-la Replace string label: {TEXT16}",
"bla-bla-bla-la Replace string label: {TEXT17}",
"bla-bla-bla-la Replace string label: {TEXT18}",
"bla-bla-bla-la Replace string label: {TEXT19}",
"bla-bla-bla-la Replace string label: {TEXT20}",
"bla-bla-bla-la Replace string label: {TEXT21}",
"bla-bla-bla-la Replace string label: {TEXT22}",
"bla-bla-bla-la Replace string label: {TEXT23}",
"bla-bla-bla-la Replace string label: {TEXT24}",
"bla-bla-bla-la Replace string label: {TEXT25}",
"bla-bla-bla-la Replace string label: {TEXT26}",
"bla-bla-bla-la Replace string label: {TEXT27}",
"bla-bla-bla-la Replace string label: {TEXT28}",
"bla-bla-bla-la Replace string label: {TEXT29}",
"bla-bla-bla-la Replace string label: {TEXT30}"
);
$a = array();
for( $i=0; $i<10; $i++ ){
shuffle($tpl_a);
$a = array_merge($a, $tpl_a);
}
$tpl = implode(" ", $a );
echo 'Template size: '. strlen($tpl) ." bytes\n";
$r = new replacer();
$tm1 = getmicrotime();
for( $i=0; $i<100; $i++ ){
$r->pcb_replace($tpl);
}
$tm2 = getmicrotime();
echo 'For $r->pcb_replace() time:';
echo $tm2 - $tm1;
echo "\n";
//
$tm1 = getmicrotime();
for( $i=0; $i<100; $i++ ){
$r->str_replace($tpl);
}
$tm2 = getmicrotime();
echo 'For $r->str_replace() time:';
echo $tm2 - $tm1;
echo "\n";
?>