代码之家  ›  专栏  ›  技术社区  ›  Polsonby

在PHP中使用preg_replace时,如何才能获得匹配结果?

  •  50
  • Polsonby  · 技术社区  · 17 年前

    我正试图抓住几个单词的大写字母,并用跨距标签将它们包装起来。我正在使用 preg_replace 用于提取和包装,但不输出任何内容。

    preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
    
    4 回复  |  直到 17 年前
        1
  •  51
  •   Andrew    8 年前

    你需要把这个模式放在括号里 /([A-Z])/ ,像这样:

    preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
    
        2
  •  27
  •   HamZa    12 年前

    \0 也将匹配整个匹配的表达式,而不使用括号进行显式捕获。

    preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
    

    一如既往,你可以去 php.net/preg_replace 或php.net/<无论什么搜索词>都可以快速搜索文档。引用文件:

    \ 0或$0表示与整个模式匹配的文本。

        3
  •  8
  •   Wedge    17 年前

    preg_replace documentation 关于PHP.NET:

    替换 可能包含以下引用 表单\n或(从php 4.0.4开始)$n, 后一种形式是 首选之一。每一个这样的参考 将替换为捕获的文本 按第n个带圆括号的模式。

    参见Flubba的示例。

        4
  •  6
  •   Dinah SLaks    16 年前

    在所需捕获周围使用括号。