使用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);
}
相關文章
- 使用ZendEncode編譯PHP程式(轉)編譯PHP
- 將Java編譯為原生程式碼Java編譯
- 將你的 C 語言程式碼編譯成 .NET編譯
- 編譯 asp 應用程式成為 exe 檔案 (轉)編譯
- 為PHP編譯imap擴充套件PHP編譯套件
- 高通程式碼編譯編譯
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- [譯] 如何讓高效的程式碼評審成為一種文化
- Java程式碼的編譯與反編譯那些事兒Java編譯
- [譯]將你的Medium文章匯出成Markdown格式
- chm (Compiled HTML Help,即“編譯的HTML幫助檔案”)的使用CompileHTML編譯
- [elixir! #0081] 編譯後的 beam code 重建為 erlang 程式碼編譯
- Sublime 編寫編譯 swift程式碼編譯Swift
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯
- PHP的編譯安裝PHP編譯
- 編譯PHP的錯誤編譯PHP
- php-7.1.0原始碼編譯安裝PHP原始碼編譯
- php頁面巢狀html程式碼,,html中js呼叫php中的陣列PHP巢狀HTMLJS陣列
- 使用makefile編譯c程式編譯C程式
- html實體編碼遇上js程式碼HTMLJS
- Markdown轉HTMLHTML
- 關於使用Markdown解析器Parsedown應該注意的編碼...
- ALinq Dynamic 使用指南——程式碼的獲取與編譯編譯
- 編譯檢查dsp程式碼的方法編譯
- 正確理解PHP程式編譯時的錯誤資訊PHP編譯
- Phalanger—PHP的.NET編譯器PHP編譯
- 使用vscode編輯markdownVSCode
- .NET 程式碼編譯過程編譯
- php編譯引數PHP編譯
- PHP編譯選項PHP編譯
- php追加編譯imagickPHP編譯
- 使用【APIDOC】生成JavaWeb的API文件(HTML,MarkDown,PDF)APIJavaWebHTML
- windows上使用clang編譯程式Windows編譯
- [譯] 利用 Immutability(不可變性)編寫更為簡潔高效的程式碼
- 將HTML字串編譯為虛擬DOM物件的基礎實現HTML字串編譯物件
- 懂編譯真的可以為所欲為|不同前端框架下的程式碼轉換編譯前端框架
- [譯] 使用深度學習自動生成 HTML 程式碼 - 第 1 部分深度學習HTML
- Java 原始碼編譯成 Class 檔案的過程分析Java原始碼編譯