繁体   English   中英

Preg_replace模式变量

[英]Preg_replace Pattern Variable

我有一个名称列表,我正在使用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; } 
    }

您需要在正则表达式上使用定界符。 例如,使用~

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

您可以在PCRE分隔符 的文档和preg_replace 的文档中阅读更多内容。

从文档:

使用PCRE功能时,要求图案由定界符括起来。 分隔符可以是任何非字母数字,非反斜杠,非空格字符。

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

/foo bar/

#^[^0-9]$#

+php+

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

您只需要向preg_replace第一个参数添加简单的定界符即可。

$letters添加正斜杠(但是也可以使用其他定界符。)

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

正如您所提到的,答案本身就是Delimiter must not be alphanumeric or backslash

暂无
暂无

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

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