2010-01-19 38 views
10

我讀http://github.github.com/github-flavored-markdown/如何在PHP Markdown中將單行換行視爲真正的換行符?

我想實現的是「換行修改」,在PHP降價:

我能想到的最好的是:

$my_html = Markdown($my_text); 
$my_html = preg_replace("/\n{1}/", "<br/>", $my_html); 

但這運行速度非常不可預料的。

+0

可能重複的[如何從字符串中刪除換行符(無字符!)](http:// stackoverflow .com/questions/10757671/how-to-remove-line-breaks-no-characters-from-the-string) – kenorb 2015-03-03 00:29:16

回答

14

尋找在你的降價文件行:

function doHardBreaks($text) { 

和改變它下面預浸模式:

return preg_replace_callback('/ {2,}\n/', array(&$this, '_doHardBreaks_callback'), $text); 

到:

return preg_replace_callback('/ {2,}\n|\n{1}/', array(&$this, '_doHardBreaks_callback'), $text); 

或者你可以只需擴展降級類,重新聲明'doHardB reaks'功能,變回成類似上面的代碼

的問候,艾哈邁德

0

PHP的nl2br功能不會削減它?

nl2br - 插入HTML行中的所有換行符之前中斷在一個字符串

http://php.net/manual/en/function.nl2br.php

如果您也想刪除所有換行符(nl2br插入< BR/>),你可以這樣做:

str_replace('\n', '', nl2br($my_html)); 

如果不是,請詳細說明您的解決方案如何失敗以及您想要解決的問題。

+1

nl2br或我的preg_replace傾向於添加太多換行符,例如。外部段落 – Lauri 2010-01-19 12:33:58

0

我想出了以下解決方案,模仿gfm換行符的大部分部分。它通過原始帖子中提到的頁面上的所有相關測試。請注意,下面的代碼預處理降價並輸出風味降價。

0

正如你所運行的降價腳本

$text = preg_replace_callback("/^[\w\<][^\n]*\n+/msU",function($x){ 
$x = $x[0]; 
$x = preg_match("/\n{2}/",$x,$match)? $x: trim($x)." \r\n"; 
return $x; 
},$text); 

$my_html = Markdown($text); 

之前,你的字符串只是運行此一個特設的腳本基於github flavored markdown

text.gsub!(/^[\w\<][^\n]*\n+/) do |x| 
    x =~ /\n{2}/ ? x : (x.strip!; x << " \n") 
end 

PS我不是最好的正則表達式,我不知道什麼編程語言github使用,所以我即興

相關問題