如何更好地优化此例程?

时间:2010-03-07 15:34:20

标签: php

下面的例程对输入的超文本流进行两次扫描。第一遍是用户定义的短语选项的自旋替换。第二遍是下面的doReplace函数中的tags集合的find替换。

我只是在寻找有关如何优化的建议。我没有性能问题。但我想构建可扩展性。

/* FIND REPLACE SPIN
--------------------------------------------------------------------*/
function doReplace($content)
{
// content is a precompiled text document formatted with html and 
// special using replacement tags matching the $tags array collection below
    $tags = array('[blog-name]', '[blog-url]', '[blog-email]');
    $replacements = array('value1', 'value2', 'value3');
    $content = str_replace($tags, $replacements, $content);
    return $content;
}

function doSpin($content) {
// the content also has phrase option tags denoted by [%phrase1|phrase2_|phrase3%]
// delimiters throughout the text.
  return preg_replace_callback('!\[%(.*?)%\]!', 'pick_one', $content);
}

function pick_one($matches) {
  $choices = explode('|', $matches[1]);
  return $choices[rand(0, count($choices)-1)];
}

$my_source_page = file_get_contents('path/to/source';}
$my_source1_spin = doSpin($my_source_page);
$my_source1_replace = doReplace($my_source1_spin);
$my_source1_final = addslashes($my_source1_replace);

//Now do something with $my_source1_final

1 个答案:

答案 0 :(得分:1)

说实话,我发现您发布的代码没有任何问题。代码中的主要瓶颈可能是file_get_contents调用。

我唯一可以看到的是你将字符串分配给不同的变量(四个以$ my_source开头的变量),这比使用1或2个变量的内存要多。

但是除非你在繁忙的网站上频繁地将大量文本读入内存,否则我认为你不必担心你发布的代码。你说自己,你现在没有任何性能问题;)