繁体   English   中英

Blockquote Markdown语法

[英]Blockquote Markdown Syntax

我想向我的解析器添加块引用,例如Stack Overflow,其中>用于标记块引用的一部分。

这是我要开始上课的工作:

<?php

$string = "This is a paragraph

> This is a blockquote
> This is a blockquote
> This is a blockquote

This is another paragraph
";
$md = new Markdown();
echo $md->parseString($string);

这是我在类中进行的工作,以解析blockquotes,问题是,它找不到要引用的部分。

<?php
$this->string = preg_replace("/^>(.+?)/is", "<blockquote>$1</blockquote>", $this->string);

如何找到这些多行块引用?

您可以使用/(?:^>.+\\n)+/m进行带替换的回调,然后在回调中使用此/^>/m返回“ replace $ match [0]”的结果,“”

 return '<blockquote>' + preg_replace( '/^>/m', "", $match[0] ) + '</blockquote>';

(我是php新手)

您可以这样做:

$subject = <<<'LOD'
This is a paragraph

> This is a blockquote
> This is a blockquote
> This is a blockquote

This is another paragraph
LOD;

$pattern = '~(?<=(\n)|)\R> (.*)(?=(\R> )?)~';

$result = preg_replace_callback($pattern, function ($match) {
    $before = (empty($match[1])) ? '' : '<blockquote>';
    $after  = (empty($match[3])) ? '</blockquote>' : '';
    return  $before . $match[2] . $after; }, $subject);

print_r($result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM