preg_replace GitHub风格的降价代码块并删除

时间:2016-12-31 02:49:09

标签: php regex markdown github-flavored-markdown

我正在尝试捕获所有出现的GitHub风格的Markdown代码块,然后从我的应用程序的最终结果中删除它们。我有一个匹配的RegEx模式,可以在这里看到:http://www.regexpal.com/?fam=96555,但是当我在preg_replace函数中运行它时,它无法删除代码块。

这是我正在运行的preg_replace函数:

preg_replace("/(```[a-z]*\n[\s\S]*?\n```)/", "", $content);

这是我正在运行它的原始内容,在通过上述函数运行时返回不变:

```php
<?php echo 'test'; ?>
```
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia 
Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. 
Donec rutrum congue leo eget malesuada. Curabitur non nulla sit amet nisl 
tempus convallis quis ac lectus. Donec sollicitudin molestie malesuada. Nulla 
porttitor accumsan tincidunt. Curabitur aliquet quam id dui posuere blandit.

最终结果应为:

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia 
Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. 
Donec rutrum congue leo eget malesuada. Curabitur non nulla sit amet nisl 
tempus convallis quis ac lectus. Donec sollicitudin molestie malesuada. Nulla 
porttitor accumsan tincidunt. Curabitur aliquet quam id dui posuere blandit.

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用\R,这是任何换行符而不是\n的转义。

preg_replace('/```[a-z]*\R.*?\R```/s', "", $content);
  • 也许您在\r[a-z]
  • 之间有一个\n
  • 要检查[a-z]*\n
  • 替换[a-z]*\r?\n
  • 进一步使用.*?点匹配所有标记s

Here is a demo at eval.in

还要注意,当使用双引号时(不是问题),您的模式确实看起来like this