Php preg_替换GitHub风格的markdown代码块并移除

Php preg_替换GitHub风格的markdown代码块并移除,php,regex,markdown,github-flavored-markdown,Php,Regex,Markdown,Github Flavored Markdown,我试图捕获所有出现的GitHub风格的标记代码块,然后从应用程序的最终结果中删除它们。我有一个匹配的正则表达式模式,可以在这里看到:,但是当我在preg\u replace函数中运行它时,它无法删除代码块 下面是我正在运行的preg_replace函数: preg_replace("/(```[a-z]*\n[\s\S]*?\n```)/", "", $content); 以下是我运行它所针对的原始内容,通过上述函数运行时,它返回的内容将保持不变: ```php <?php echo '

我试图捕获所有出现的GitHub风格的标记代码块,然后从应用程序的最终结果中删除它们。我有一个匹配的正则表达式模式,可以在这里看到:,但是当我在
preg\u 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.
任何帮助都将不胜感激。谢谢大家!

试试看,它是任何换行符序列的转义,而不是
\n

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


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

请注意,先生!谢谢你!
preg_replace('/```[a-z]*\R.*?\R```/s', "", $content);