2010-01-19 44 views
10

Tôi đã đọc http://github.github.com/github-flavored-markdown/Làm thế nào để xử lý một dòng mới như ngắt dòng thực trong PHP Markdown?

tôi muốn thực hiện điều đó "Newline sửa đổi" trong PHP Markdown:

tốt nhất tôi có thể nghĩ đến là:

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

Nhưng điều này chạy rất unexpectable.

+0

bản sao có thể có của [Làm cách nào để loại bỏ ngắt dòng (không có ký tự!) Khỏi chuỗi?] (Http: // stackoverflow .com/questions/10757671/how-to-remove-line-break-no-characters-from-the-string) – kenorb

Trả lời

14

Hãy tìm dòng trong tập tin markdown của bạn:

function doHardBreaks($text) { 

và thay đổi mô hình preg dưới nó từ:

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

tới:

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

Hoặc bạn có thể chỉ cần mở rộng lớp markdown, redeclare 'doHardB chức năng reaks', và thay đổi trở thành một cái gì đó giống như mã trên

Kính trọng, Achmad

0

Chức năng nl2br của PHP không cắt nó?

nl2br - dòng Chèn HTML phá vỡ trước khi tất cả các dòng mới trong một chuỗi

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

Nếu bạn cũng muốn loại bỏ tất cả xuống hàng (nl2br chèn < br/>), bạn có thể làm:

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

Nếu không, vui lòng giải thích về cách giải pháp của bạn không thành công và những gì bạn muốn khắc phục.

+1

nl2br hoặc preg_replace của tôi có xu hướng thêm quá nhiều ngắt dòng, ví dụ: bên ngoài đoạn văn – Lauri

0

Tôi đã đưa ra giải pháp sau, bắt chước hầu hết các phần của hành vi dòng mới của gfm. Nó vượt qua tất cả các bài kiểm tra có liên quan trên trang được đề cập trong bài đăng gốc. Xin lưu ý rằng mã bên dưới xử lý trước đánh dấu và xuất ra đánh dấu có hương vị.

0

Như một kịch bản ad-hoc bạn chỉ có thể chạy trên chuỗi của bạn trước khi chạy kịch bản markdown

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

Dựa trên số github flavored markdown

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

PS Tôi không giỏi nhất ở regex và tôi không biết github ngôn ngữ lập trình nào sử dụng nên tôi đã ứng biến

Các vấn đề liên quan