【问题标题】:RegEx in PHP - as an example, replace <B> tags with <I>PHP 中的 RegEx - 例如,将 <B> 标签替换为 <I>
【发布时间】:2011-11-24 12:16:12
【问题描述】:

我对 RegEx 几乎一无所知,即使在阅读了一些教程之后:\ 我基本上只是想知道如何用标签替换标签 - 那么如何匹配标签以及如何声明要替换它,保持标签文本不变?我在替换字符串中看到了关于 $1 的内容,但我不知道它指的是什么?

尽可能深入,我是新手,需要帮助!

【问题讨论】:

标签: php html regex tags


【解决方案1】:

这是一个非常简单的例子:

    $regex = '~
      <b>           #match opening <b> tag
      (.*?)         #match anything in between
      </b>          #match closing </b> tag
    ~six';

    preg_replace($regex, '<i>$1</i>', $input);

在此示例中,正则表达式匹配标签内的开始 B 标记内容和结束 B 标记。以下模式 (.*?) 将内容单独分组,以便您以后可以像 $1 一样引用它。

如果我们通过添加更多分组括号来稍微修改表达式:

    $regex = '~
      (<b>)         #match opening <b> tag
      (.*?)         #match anything in between
      (</b>)        #match closing </b> tag
    ~six';

    preg_replace($regex, '<i>$2</i>', $input);

替换部分将从 $1 更改为 $2,就我们所指的三个组而言 (.*?) 和 $2 因为它是第二组等等...

http://www.php.net/manual/en/reference.pcre.pattern.syntax.php

【讨论】:

  • 这正是我所追求的——所以 $1、$2 等只是指匹配字符串中的分组内容(括号中的分组)?
  • 为什么会有~~six和结尾?
  • 前导和尾随 ~ 字符用于指示表达式的开始和结束。 "six" 表示:"s" 启用换行匹配,"i" 表示不区分大小写,"x" 表示我们可以将 cmets 放入正则表达式中。
【解决方案2】:

我建议你看一些教程视频,因为阅读它们显然没有帮助,我可以想象回答如何用&lt;I&gt; 替换&lt;B&gt; 也无济于事。

这里是 youtube 上的视频教程,例如:Regular Expression Tutorials Part # 1 for PHP - Javascript

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2020-05-29
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多