マークダウンでのエスケープの修正
This commit is contained in:
@@ -275,39 +275,39 @@ class Markdown {
|
||||
|
||||
$patterns = [
|
||||
// 数式
|
||||
'/\$\$([^$]+)\$\$/u' => function($matches): string {
|
||||
'/(?<!\\\\)\$\$([^$]+)\$\$/u' => function($matches): string {
|
||||
$placeholder = "{{ALG".count($this->algebraicPlaceholder).'ALG}}';
|
||||
$this->algebraicPlaceholder[$placeholder] = $matches[1];
|
||||
return $placeholder;
|
||||
},
|
||||
// 太字
|
||||
'/\*\*(.+?)\*\*/u' => '<strong>$1</strong>',
|
||||
'/(?<!\\\\)\*\*(.+?)\*\*/u' => '<strong>$1</strong>',
|
||||
// 斜体
|
||||
'/\*(.+?)\*/u' => '<em>$1</em>',
|
||||
'/(?<!\\\\)\*(.+?)\*/u' => '<em>$1</em>',
|
||||
// 下線
|
||||
'/\_(.+?)\_/u' => '<u>$1</u>',
|
||||
'/(?<!\\\\)_(.+?)_/u' => '<u>$1</u>',
|
||||
// 取り消し線
|
||||
'/\~(.+?)\~/u' => '<s>$1</s>',
|
||||
'/(?<!\\\\)~(.+?)~/u' => '<s>$1</s>',
|
||||
// Blink (with speed)
|
||||
'/!:\((.+?)\)(.+?):!/u' => '<span class="blink" style="animation-duration: $1s;">$2</span>',
|
||||
'/(?<!\\\\)!:\((.+?)\)(.+?):!/u' => '<span class="blink" style="animation-duration: $1s;">$2</span>',
|
||||
// Blink
|
||||
'/!:(.+?):!/u' => '<span class="blink">$1</span>',
|
||||
'/(?<!\\\\)!:(.+?):!/u' => '<span class="blink">$1</span>',
|
||||
// フォントの大きさ
|
||||
'/\^\((.+?)\)(.+?)\^/u' => '<span style="font-size: $1px;">$2</span>',
|
||||
'/(?<!\\\\)\^\((.+?)\)(.+?)\^/u' => '<span style="font-size: $1px;">$2</span>',
|
||||
// フォントカラー
|
||||
'/\%\((.+?)\)(.+?)\%/u' => '<span style="color: #$1;">$2</span>',
|
||||
'/(?<!\\\\)\%\((.+?)\)(.+?)\%/u' => '<span style="color: #$1;">$2</span>',
|
||||
// 画像
|
||||
'/\!\[(.*?)(?:#([^\]]*))?\]\((.+?)\)/u' => '<img style="width: 100%; $2" src="$3" alt="$1" />',
|
||||
'/(?<!\\\\)\!\[(.*?)(?:#([^\]]*))?\]\((.+?)\)/u' => '<img style="width: 100%; $2" src="$3" alt="$1" />',
|
||||
// 音楽
|
||||
'/\$\[([^\]]+)\]\(([^\)]+)\)/u' => '<audio controls><source src="$2" type="$1" /></audio>',
|
||||
'/(?<!\\\\)\$\[([^\]]+)\]\(([^\)]+)\)/u' => '<audio controls><source src="$2" type="$1" /></audio>',
|
||||
// 動画
|
||||
'/\#\[([^\]]+)\]\(([^\)]+)\)/u' => '<video style="max-width: 100%;" controls><source src="$2" type="$1" /></video>',
|
||||
'/(?<!\\\\)\#\[([^\]]+)\]\(([^\)]+)\)/u' => '<video style="max-width: 100%;" controls><source src="$2" type="$1" /></video>',
|
||||
// リンク
|
||||
'/\[(.+?)\]\((.+?)\)/u' => '<a href="$2">$1</a>',
|
||||
'/(?<!\\\\)\[(.+?)\]\((.+?)\)/u' => '<a href="$2">$1</a>',
|
||||
// 振り仮名
|
||||
'/\<(.+?)\>\((.+?)\)/u' => '<ruby>$1<rp>(</rp><rt>$2</rt><rp>)</rp></ruby>',
|
||||
'/(?<!\\\\)<(.+?)>\((.+?)\)/u' => '<ruby>$1<rp>(</rp><rt>$2</rt><rp>)</rp></ruby>',
|
||||
// インラインコード
|
||||
'/`(.+?)`/u' => '<code>$1</code>',
|
||||
'/(?<!\\\\)`(.+?)`/u' => '<code>$1</code>',
|
||||
];
|
||||
|
||||
foreach ($patterns as $pattern => $replacement) {
|
||||
@@ -325,6 +325,8 @@ class Markdown {
|
||||
$text = str_replace($placeholder, $this->parseAlgebraic($expr), $text);
|
||||
}
|
||||
|
||||
$text = preg_replace('/\\\\(.)/u', '$1', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user