替代我的preg_replace代码

时间:2010-04-01 00:13:13

标签: php regex

这是我的代码......基本上它在变量中找到任何页面-NUMBER-然后用数组中的页面url替换它

$content_text = preg_replace("/page-(\d+)-/sie", '$pageurl[$1]', $content_text);

直到它找到的NUMBER不在数组中并且它返回错误...

我可以采用另一种有效方式吗?

我喜欢上面的代码因为它很简单,但我可能不得不使用更复杂的代码......

4 个答案:

答案 0 :(得分:1)

语法可能不是100%正确但是;

$content_text = preg_replace_callback('/page-(\d+)-/sie',
    create_function('$number',
                    'global $pageurl;
                    if (in_array($number, $pageurl)){
                        return $pageurl[$number];
                    }else{
                        /*do something*/
                    };'),
    $content_text);

编辑忘记包含“global $ pageurl;”能够访问函数内部的变量。

答案 1 :(得分:0)

在替换中添加一个检查以查看该项目中是否存在该项目。如果将代码放入函数并使用preg_replace_callback而不是e标志,则可能更容易阅读。

答案 2 :(得分:0)

为什么不通过preg_match_all获取数字,根据您获得的数字创建替换数组,然后使用这些数组运行str_replace。这样你可以确保1-1更换。

答案 3 :(得分:0)

foreach ($pageurl AS $num => $url) {
    $search[] = "/page-({$num})-/sie";
    $replace[] = $url;
}
$content_text = preg_replace($search, $replace, $content_text);