PHP Markdown gerçek satır sonu tek satırsonunu tedavi nasıl?

4 Cevap php

Ben okuyordum http://github.github.com/github-flavored-markdown/

PHP Markdown o "Newline modifikasyonu" uygulamak istiyoruz:

Ben düşünebildiğim en iyi:

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

Ama bu çok unexpectable çalışır.

4 Cevap

Lütfen markdown dosyasında satırına bakın:

function doHardBreaks($text) {

ve gelen altındaki gebelerde düzenini değiştirmek:

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

için:

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

Yoksa sadece markdown sınıf, Redeclare 'doHardBreaks' işlevi genişletmek ve yukarıdaki kod gibi bir şey içine dönüşünü değiştirebilirsiniz

Selamlar, Achmad

PHP'nin nl2br-fonksiyonu kesmiyor?

nl2br — Inserts HTML line breaks before all newlines in a string

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

Aynı zamanda tüm linebreaks (nl2br uçlar
) kaldırmak istiyorsanız, bunu yapabilirsiniz:

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

Değilse, çözüm başarısız nasıl ayrıntılı ve düzeltmek istiyorum ne lütfen.

Ben gfm satır davranış çoğu parçaları taklit, aşağıdaki çözüm ile geldi. Bu orijinal sonrası belirtilen sayfadaki tüm ilgili testleri geçer. Preprocesses markdown ve çıkışları aşağıdaki kod markdown aromalı unutmayın.

preg_replace('/(?<!\n)\n(?![\n\*\#\-])/', "  \n", $content);

Bir ad-hoc dosyası olarak sadece markdown komut dosyasını çalıştırmadan önce dize bu çalıştırabilirsiniz

$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 dayanarak

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

P.S. Ben regex de iyi değilim ve ben programlama dili github yüzden doğaçlama kullanır bilmiyorum