【问题标题】:Preg_replace Pattern VariablePreg_replace 模式变量
【发布时间】:2014-12-28 19:35:47
【问题描述】:

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

【问题讨论】:

标签: php preg-replace


【解决方案1】:

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

$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_-]%

【讨论】:

  • 糟糕。复制并编辑了错误的行。查看我的编辑。
  • 非常感谢,毕竟很简单!
  • 很高兴为您提供帮助!请记住选择一个答案! :)
【解决方案2】:

您只需在preg_replace 的第一个参数中添加简单的分隔符。

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

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

正如你在问题中提到的,答案本身就是Delimiter must not be alphanumeric or backslash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2015-06-02
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多