Preg_replace模式变量

时间:2014-12-28 19:35:48

标签: php preg-replace

我有一个名单列表,我使用preg_replace使这些名称的某些部分变为粗体。我正在使用str_replace但我需要限制它。

但是我收到错误"分隔符不能是字母数字或反斜杠"。经过一些研究后我发现它正在发生,因为我的模式变量上缺少斜杠。

然而,我一直在努力,我无法做到正确,而且我找不到像我这样的例子。谢谢您的帮助。

while($row = $result->fetch_array()) {
        $name = $row['name'];

    $array = explode(' ',trim($name));
    $array_length = count($array);

    for ($i=0; $i<$array_length; $i++ ) {
        $letters = substr($array[$i], 0, $q_length);
        if ($letters = $q) {
        $bold_name = '<strong>'.$letters.'</strong>';
        $final_name = preg_replace($letters, $bold_name, $array[$i], 1);
        $array[$i] = $final_name; } 
    }

2 个答案:

答案 0 :(得分:2)

你的正则表达式需要一个分隔符。例如,使用~

$final_name = preg_replace('~'.$letters.'~', $bold_name, $array[$i], 1);

您可以在the documentation for PCRE delimitersthe documentation for preg_replace了解更多信息。

来自文档:

  

使用PCRE功能时,需要将模式包含在分隔符中。分隔符可以是任何非字母数字,非反斜杠,非空白字符。

     

经常使用的分隔符是正斜杠(/),哈希符号(#)和波浪号(~)。以下是有效分隔模式的所有示例。

     

/foo bar/

     

#^[^0-9]$#

     

+php+

     

%[a-zA-Z0-9_-]%

答案 1 :(得分:0)

您只需要将简单分隔符添加到preg_replace的第一个参数。

$letters添加正斜杠(但也可以使用其他分隔符。)

$final_name = preg_replace('/'.$letters.'/', $bold_name, $array[$i], 1);

如您所述,答案本身就是Delimiter must not be alphanumeric or backslash