PHP preg_replace_callback有没有办法打破搜索?

时间:2015-10-15 16:26:56

标签: php regex preg-replace-callback

当达到某个索引时,有没有办法打破preg_replace_callback的搜索?

例如:

            $content = preg_replace_callback('/'.preg_quote($_POST['query'],'#').'/i', function($matches) use($replacements,&$index) {
                if ( $index > count($replacements) ) {
                    // I tried break; but doesn't work
                }

                if ( $replacements[$index] != '' ) {
                    $matches[0] = $replacements[$index];
                }
                $index++;
                return $matches[0];
            }, $content);

1 个答案:

答案 0 :(得分:1)

你可以使用elseif忽略第二个if

       $content = preg_replace_callback('/'.preg_quote($_POST['query'],'#').'/i', function($matches) use($replacements,&$index) {
            if ( $index > count($replacements) ) {
                // I tried break; but doesn't work
            } elseif ( $replacements[$index] != '' ) {
                $matches[0] = $replacements[$index];
            }
            $index++;
            return $matches[0];
        }, $content);

编辑

preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit [, int &count]] )

限 每个主题字符串中每个模式的最大可能替换。默认为-1(无限制)。

计数 如果指定,则此变量将填充已完成的替换次数。