不知道怎么做这个正则表达式

时间:2012-04-06 20:40:06

标签: php regex markdown

在询问下面的问题并思考之后,我相信这个正则表达式就是我所需要的。不知道怎么做。

![anycharacter](anycharacter)[anycharacter](anycharacter)

- 原创标题和消息 -

PHP Markdown Extra - 不允许图像

现在我只是将css设置为隐藏允许降价的区域中的图像。我想这样做,如果使用markdown图像语法,图像将不会显示。我实际上更喜欢它只是变成一个链接,但简单地不允许它会没事。我想检查![text](imagelink)的正则表达式是否可行,但我在正则表达式方面做得不够,或者知道这是否是最好的选择。

-edit-现在我正在做preg_replace('/!\[/', "[", $text );的preg_replace,但我仍然认为这不是最佳解决方案,因为它会删除!甚至有时可能会有另一个原因![出现。我想我只需要知道如何用![anycharacter](anycharacter)

替换[anycharacter](anycharacter)

1 个答案:

答案 0 :(得分:2)

这实际上不是我的代码来自http://core.svn.wordpress.org/tags/1.5.1.3/wp-content/plugins/markdown.php,但您可以使用它来预先通过您的输入 _DoImages_reference_callback($ matches)和_DoImages_inline_callback($ matches)函数, 然而,这只是一个要点。

$text = preg_replace_callback('{
    (               # wrap whole match in $1
      !\[
        (.*?)       # alt text = $2
      \]

      [ ]?              # one optional space
      (?:\n[ ]*)?       # one optional newline followed by spaces

      \[
        (.*?)       # id = $3
      \]

    )
    }xs', 
    '_DoImages_reference_callback', $text);

#
# Next, handle inline images:  ![alt text](url "optional title")
# Don't forget: encode * and _

$text = preg_replace_callback("{
    (               # wrap whole match in $1
      !\\[
        (.*?)       # alt text = $2
      \\]
      \\(           # literal paren
        [ \\t]*
        <?(\S+?)>?  # src url = $3
        [ \\t]*
        (           # $4
          (['\"])   # quote char = $5
          (.*?)     # title = $6
          \\5       # matching quote
          [ \\t]*
        )?          # title is optional
      \\)
    )
    }xs",
    '_DoImages_inline_callback', $text);