(.+?)<\/div><\/li>/';
$replacement = '
$1
';
$tpl = preg_replace($pattern,$replacement,$tpl);
return $tpl;
}
public static function markdown2wiki(string $markdown,$channelType,$contentType): string{
//$markdown = mb_convert_encoding($markdown,'UTF-8','UTF-8');
$markdown = iconv('UTF-8','UTF-8//IGNORE',$markdown);
/**
* nissaya
* aaa=bbb\n
* {{nissaya|aaa|bbb}}
*/
if($channelType==='nissaya'){
if($contentType === "json"){
$json = json_decode($markdown);
$nissayaWord = [];
foreach ($json as $word) {
if(count($word->sn) === 1){
//只输出第一层级
$str = "{{nissaya|";
if(isset($word->word->value)){
$str .= $word->word->value;
}
$str .= "|";
if(isset($word->meaning->value)){
$str .= $word->meaning->value;
}
$str .= "}}";
$nissayaWord[] = $str;
}
}
$markdown = implode('',$nissayaWord);
}else if($contentType === "markdown"){
/*
$pattern = '/(.+?)=(.+?)\n/';
$replacement = '{{nissaya|$1|$2}}';
$markdown = preg_replace($pattern,$replacement,$markdown);
$pattern = '/(.+?)=(.?)\n/';
$replacement = '{{nissaya|$1|$2}}';
$markdown = preg_replace($pattern,$replacement,$markdown);
$pattern = '/(.?)=(.+?)\n/';
$replacement = '{{nissaya|$1|$2}}';
$markdown = preg_replace($pattern,$replacement,$markdown);
*/
$lines = explode("\n",$markdown);
$newLines = array();
foreach ($lines as $line) {
if(strstr($line,'=') === FALSE){
$newLines[] = $line;
}else{
$nissaya = explode('=',$line);
$meaning = array_slice($nissaya,1);
$meaning = implode('=',$meaning);
$newLines[] = "{{nissaya|{$nissaya[0]}|{$meaning}}}";
}
}
$markdown = implode("\n",$newLines);
}
}
//$markdown = preg_replace("/\n\n/","
",$markdown);
/**
* 替换换行符
* react 无法处理
替换为
代替换行符作用
*/
$markdown = str_replace('
','
',$markdown);
/**
* markdown -> html
*/
$markdown = str_replace(['[[',']]'],['㐛','㐚'],$markdown);
$html = Str::markdown($markdown);
$html = str_replace(['㐛','㐚'],['[[',']]'],$html);
#替换术语
$pattern = "/\[\[(.+?)\]\]/";
$replacement = '{{term|$1}}';
$html = preg_replace($pattern,$replacement,$html);
#替换句子模版
$pattern = "/\{\{([0-9].+?)\}\}/";
$replacement = '{{sent|$1}}';
$html = preg_replace($pattern,$replacement,$html);
#替换单行注释
#
bla
#{{note|bla}}
$pattern = '/
(.+?)<\/code>/';
$replacement = '{{note|$1}}';
$html = preg_replace($pattern,$replacement,$html);
#替换多行注释
#bla
#{{note|bla}}
$pattern = '/([\w\W]+?)<\/code><\/pre>/';
$replacement = '{{note|$1}}';
$html = preg_replace($pattern,$replacement,$html);
return $html;
}
/**
* string[] $channelId
*/
public static function render($markdown,$channelId,$queryId=null,$mode='read',$channelType='translation',$contentType="markdown"){
return MdRender::render2($markdown,$channelId,$queryId,$mode,$channelType,$contentType);
}
}