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