下面的例程对输入的超文本流进行两次扫描。第一遍是用户定义的短语选项的自旋替换。第二遍是下面的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
答案 0 :(得分:1)
说实话,我发现您发布的代码没有任何问题。代码中的主要瓶颈可能是file_get_contents调用。
我唯一可以看到的是你将字符串分配给不同的变量(四个以$ my_source开头的变量),这比使用1或2个变量的内存要多。
但是除非你在繁忙的网站上频繁地将大量文本读入内存,否则我认为你不必担心你发布的代码。你说自己,你现在没有任何性能问题;)