使用PHP編譯Markdown成為HTML程式碼的基本思路
Github Reference:傳送門
1.從前端獲得Markdown原始資料:
$s_markdown = $this->input->expectType('p:markdown', 'string', '');
2.將原文中的水平製表符\t替換成空格,去除換行符\r:
private function initText($text) { $text = str_replace(array("\t", "\r"), array(' ', ''), $text); return $text; }
3.處理所有的Mark符號,轉變為HTML標籤(例):
$text = preg_replace_callback( "/!\[((?:[^\]]|\\\\\]|\\\\\[)*?)\]\(((?:[^\)]|\\\\\)|\\\\\()+?)\)/",
function ($matches) use ($self)
{ $escaped = $self->escapeBracket($matches[1]);
$url = $self->escapeBracket($matches[2]);
$url = $self->cleanUrl($url);
return $self->makeHolder( "<img src=\"{$url}\" alt=\"{$escaped}\" title=\"{$escaped}\">" ); },
$text );
4.新增腳註:
$html .= '<div class="footnotes"><hr><ol>';
$index = 1;
while ($val = array_shift($this->_footnotes))
{
if (is_string($val))
{
$val .= " <a href=\"#fnref-{$index}\" class=\"footnote-backref\"></a>";
}
else
{
$val[count($val) - 1] .= " <a href=\"#fnref-{$index}\" class=\"footnote-backref\"></a>";
$val = count($val) > 1 ? $this->parse(implode("\n", $val)) : $this->parseInline($val[0]);
}
$html .= "<li id=\"fn-{$index}\">{$val}</li>"; $index ++; }
$html .= '</ol></div>';
5.將以上轉換方法宣告為過載函式,遞迴呼叫:
public function makeHtml($text)
{ $text = $this->initText($text);
$html = $this->parse($text);
$html = $this->makeFootnotes($html);
return $this->call('makeHtml', $html);
}
相關文章
- 將 Rust 程式碼編譯為 WASMRust編譯ASM
- 將Java編譯為原生程式碼Java編譯
- 【譯】使用 GitHub Copilot 作為你的編碼 GPSGithub
- [elixir! #0081] 編譯後的 beam code 重建為 erlang 程式碼編譯
- Java程式碼的編譯與反編譯那些事兒Java編譯
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯
- Sublime 編寫編譯 swift程式碼編譯Swift
- [譯] 如何讓高效的程式碼評審成為一種文化
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- html實體編碼遇上js程式碼HTMLJS
- 高通程式碼編譯編譯
- Markdown編輯器的基本使用
- AndroidStudio使用NDK編譯C/C++程式碼使用原生庫Android編譯C++
- 使用vscode編輯markdownVSCode
- [譯]將你的Medium文章匯出成Markdown格式
- 編譯檢查dsp程式碼的方法編譯
- 使用htmlprettify美化您的HTML程式碼HTML
- python程式碼混淆與編譯Python編譯
- vscode怎麼執行程式碼HTML 怎麼在vscode編寫HTML程式碼VSCode行程HTML
- 使用【APIDOC】生成JavaWeb的API文件(HTML,MarkDown,PDF)APIJavaWebHTML
- php編譯引數PHP編譯
- HTML5遊戲開發(二):使用TypeScript編寫程式碼HTML遊戲開發TypeScript
- 掘金Markdown編輯器使用
- 關於使用Markdown解析器Parsedown應該注意的編碼...
- 將HTML字串編譯為虛擬DOM物件的基礎實現HTML字串編譯物件
- [譯] 利用 Immutability(不可變性)編寫更為簡潔高效的程式碼
- [譯]編寫可以複用的 HTML 模板HTML
- JIT 編譯後的程式碼儲存位置編譯
- 如何學習 PHP 原始碼 – 從編譯開始PHP原始碼編譯
- Linux中程式包管理及程式的原始碼編譯Linux原始碼編譯
- Python 編譯成 exePython編譯
- 懂編譯真的可以為所欲為|不同前端框架下的程式碼轉換編譯前端框架
- java 程式碼編譯檢查工具Java編譯
- httpd編譯安裝phphttpd編譯PHP
- centos PHP 編譯安裝CentOSPHP編譯
- 歡迎使用markdown編輯器
- markdown編輯器使用備忘
- markdown編輯器常見使用
- 為了簡寫這行程式碼,我竟使用靜態和動態編譯技術行程編譯