【问题标题】:Replace **Foo** to <strong>Foo</stong> (regex)?将 **Foo** 替换为 <strong>Foo</stong> (正则表达式)?
【发布时间】:2014-02-26 00:02:06
【问题描述】:

我可以在这里做这样的 preg_replace 吗?我真的不会说正则表达式。

我要过滤 WordPress 帖子并打算做这样的替换。如果有更好/更快的方法,我不想一一列举所有**s。

就像每个偶数 ** 做这个,每个奇数 ** 做那个,或者这样。

【问题讨论】:

标签: php regex preg-replace markdown


【解决方案1】:
$patterns = array("/\*\*([^*]+)\*\*/", ...);
$replacements = array("<strong>$1</strong>", ...);
$result = preg_replace($patterns, $replacements, $subject);

【讨论】:

  • 这里最好使用(.+) 而不是只针对字母
  • 尽管您需要对其进行调整,以便它仍能捕捉到结尾 **.. 抱歉:([^*.]+)
  • 谢谢!错误,有什么方法可以将更多类似的过滤器添加到单个替换调用中?喜欢 &lt;code&gt; 标签或类似标签的反引号。
  • @Geri 已编辑,看看 ;) 你可以将数组传递给 preg_replace
  • *[]内部时不要逃跑
【解决方案2】:

这将允许包含单个星号的内部字符串,例如“** Foo * Bar **”:

match: (\*{2})([^\1]*?)\1
replace: <strong>\2</strong>

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多