[英]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.