繁体   English   中英

使用preg_replace替换值

[英]Replacing values using preg_replace

我有一个Joomla插件(在此情况下并不重要),该插件旨在接收带有大量数字(在文本的一段内)的输入,并用一系列s代替它们。

我的问题是我需要在$ article-> text上执行preg_replace,但是我不知道如何将更改应用于匹配的术语。 我看过preg_replace_callback,但是我不知道如何在函数中调用它。

function onPrepareContent( &$article, &$params, $limitstart )
    {
        global $mainframe;
        // define the regular expression
        $pattern = "#{lotterynumbers}(.*?){/lotterynumbers}#s";
        if(isset($article->text)){
            preg_match($pattern, $article->text, $matches);
            $numbers = explode("," , $matches[1]);
            foreach ($numbers as $number) {
                echo "<div class='number'><span>" . $number . "</span></div>";  
            }
        }else{
            $article->text = 'No numbers';
        }
        return true;
    }

修改后的代码:

function onPrepareContent( &$article, &$params, $limitstart )
    {
        global $mainframe;
        // define the regular expression
        $pattern = "#{lotterynumbers}(.*?){/lotterynumbers}#s";
        if(isset($article->text)){
            preg_match($pattern, $article->text, $matches);
            $numbers = explode("," , $matches[1]);
            foreach ($numbers as $number) {
                $numberlist[] = "<div class='number'><span>" . $number . "</span></div>";   
            }
            $numberlist = implode("", $numberlist);
            $article->text = preg_replace($pattern, $numberlist, $article->text);

        }else{
            $article->text = 'No numbers';
        }
        return true;
    }
function onPrepareContent( &$article, &$params, $limitstart )
{
    global $mainframe;
    // define the regular expression
    $pattern = "#{lotterynumbers}(.*?){/lotterynumbers}#s";
    if(isset($article->text)){
        $article->text=preg_replace_callback($pattern,create_function('$match','$init="<div class=\'number\'><span>";$out="</span></div>"; return $init.implode($out.$init,explode(",",$match[1])).$out;'),$article->text);

    }else{
        $article->text = 'No numbers';
    }
    return true;
}

我没有测试过,但应该可以

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM