preg_replace GitHub flavored markdown 代码块并删除

preg_replace GitHub flavored markdown codeblock and remove

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

这是我运行宁的preg_replace函数:

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

这是我运行反对的原始内容,当运行通过上述功能反对时returns不变:

```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.

如有任何帮助,我们将不胜感激。谢谢!

尝试使用 \R,这是对任何 换行序列 的转义,而不是 \n.

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

Here is a demo at eval.in

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