pregreplace retunrs空字符串

时间:2019-02-21 18:56:21

标签: php preg-replace

我正在尝试使用pregreplace突出显示文本中的单词。单词在数组中,我确实将其输入pregreplace。这曾经可以工作,但由于过去升级php而停止了,现在却什么也没返回。

// Function highlights $words in $str 
function highlight_words($str, $words) {
    global  $color;
    if(is_array($words)) {
        foreach($words as $k => $word) {
            // $pattern[$k] = "~\b($word)\b~is";
            $pattern[$k] = "/$word/";
            $replace[$k] = '<span style="background: '.$color[2].';color:'.$color[4].';">\\1</span>';
        }
    }
    else {
        $pattern = "~\b($words)\b~is";
        $replace = '<span style="background: '.$color[2].';color:'.$color[4].';">\\1</span>';
    }
    return preg_replace($pattern,$replace ,$str);
}


echo highlight_words($text, $words);

模式值:

Array
(
[0] => /$18.5mUSD/
[1] => /$8,000,000.00/
[2] => /(at)/
[3] => /+43 688 649 45702/
...

$ replace的值:

Array
(
[0] => <span style="background: #FF6B02;color:#FFFFFF;">\1</span>
[1] => <span style="background: #FF6B02;color:#FFFFFF;">\1</span>
[2] => <span style="background: #FF6B02;color:#FFFFFF;">\1</span>
[3] => <span style="background: #FF6B02;color:#FFFFFF;">\1</span>
...

preg_replace完全不返回任何内容。似乎是数组问题,但语法看起来还可以。如果我更改preg_replace来替换一些简单的正则表达式模式,它将可以,但不适用于该数组。

如何解决?

0 个答案:

没有答案