2010-01-19 6 views
10

Ich war http://github.github.com/github-flavored-markdown/Wie behandelt man einzelne Zeilenumbrüche als echte Zeilenumbrüche in PHP Markdown?

lesen würde ich umsetzen möchte, dass "Newline Modifikation" in PHP Markdown:

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

Aber das läuft sehr unexpectable:

Best I von ist einfiel.

+0

mögliche Duplikate von [Wie Zeilenumbrüche (keine Zeichen!) Aus der Zeichenfolge entfernen?] (Http: // Stackoverflow .com/questions/10757671/how-to-entfernen-line-breaks-no-characters-from-the-string) – kenorb

Antwort

14

Geben Sie für Zeile in der Abschlags-Datei:

function doHardBreaks($text) { 

und die Preg Muster von unten ändern:

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

zu:

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

Oder Sie können erweitern Sie einfach die Abschriftenklasse, deklarieren Sie 'doHardB Reaks' Funktion, und ändern Sie die Rückkehr in so etwas wie Code oben

Grüße, Achmad

0

PHPs nl2br-Funktion schneidet nicht?

nl2br - Fügt HTML-Zeilenumbrüche vor allen Zeilenumbrüchen in einem String

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

Wenn Sie auch alle Zeilenumbrüche entfernen möchten (nl2br < br/> Einsätze), könnten Sie tun:

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

Wenn nicht, bitte erläutern Sie, wie Ihre Lösung fehlschlägt und was Sie beheben möchten.

+1

nl2br oder meine preg_replace neigt dazu, zu viele Zeilenumbrüche, z. außerhalb von Absätzen – Lauri

0

Ich habe die folgende Lösung entwickelt, die die meisten Teile des gfm-Newline-Verhaltens nachahmt. Es besteht alle relevanten Tests auf der Seite, die im ursprünglichen Post erwähnt wird. Bitte beachten Sie, dass der unten stehende Code Markdown vorverarbeitet und aromatisierte Abschriften ausgibt.

0

Als Ad-hoc-Skript, das Sie gerade diese auf Zeichenfolge ausführen kann, bevor der Abschlags-Skript

$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); 

läuft Basiert auf dem github flavored markdown

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

PS Ich bin nicht der beste bei Regex und ich weiß nicht, welche Programmiersprache GitHub verwendet, also improvisierte ich

Verwandte Themen