Php 块引号标记语法

Php 块引号标记语法,php,regex,preg-replace,markdown,Php,Regex,Preg Replace,Markdown,我想向解析器添加块引号,比如堆栈溢出,其中用于标记块引号的一部分 以下是我为启动课程所做的工作: <?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($str

我想向解析器添加块引号,比如堆栈溢出,其中
用于标记块引号的一部分

以下是我为启动课程所做的工作:

<?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);

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

返回“”+preg_replace('/^>/m',“”,$match[0])+“”;
(我是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);
$subject=这是一个blockquote
这是另一段
LOD;
$pattern='~(?(.*)(?=(\R>)?)~';
$result=preg\u replace\u回调($pattern,function($match){
$before=(空($match[1])?“”;
$after=(空($match[3])?“”;
返回$before.$match[2]。$after;},$subject);
打印(结果);

你想为每行添加一个blockquote标记,还是为所有连续行添加一个blockquote标记?为所有连续行添加一个blockquote标记。这不起作用…执行:
preg\u match\u all(/(?:^>[^\S\n]+\n“,$this->string,$matches);打印($matches);
给我一个空数组。使用
'/(?:^>+\n)+/m'
(您在编辑过程中发现了我)。或者您可以使用
'/(?:^>[^\n]+\n)+/m'
一个数组元素应该是整个块引号。
 return '<blockquote>' + preg_replace( '/^>/m', "", $match[0] ) + '</blockquote>';
$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);