2010-01-19 13 views
10

estaba leyendo http://github.github.com/github-flavored-markdown/¿Cómo se trata la nueva línea individual como un salto de línea real en el descuento de PHP?

me gustaría poner en práctica que "la modificación de nueva línea" en PHP de rebajas:

mejor que pude pensar es:

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

Pero esto funciona muy unexpectable.

+0

posible duplicado de [Cómo eliminar saltos de línea (sin caracteres!) De la cadena?] (Http: // stackoverflow .com/questions/10757671/how-to-remove-line-breaks-no-characters-from-the-string) – kenorb

Respuesta

14

Busque línea en su archivo de rebajas:

function doHardBreaks($text) { 

y cambiar el patrón preg debajo de:

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

a:

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

O puede solo extienda la clase de rebaja, redeclare 'doHardB función reaks', y cambiar el rendimiento en algo así como el código de

Saludos, Achmad

0

PHP's nl2br -function does not cortarlo?

nl2br - línea de inserciones de HTML antes de cada nueva línea en una cadena

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

Si también desea eliminar todos los saltos de línea (nl2br inserta < br/>), se puede hacer:

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

De lo contrario, explique cómo falla su solución y qué quiere corregir.

+1

nl2br o mi preg_replace tiende a agregar demasiados saltos de línea, ej. párrafos externos – Lauri

0

He encontrado la siguiente solución, imitando la mayoría de las partes del comportamiento de nueva línea de gfm. Pasa todas las pruebas relevantes en la página mencionada en la publicación original. Tenga en cuenta que el código siguiente preprocesos markdown y produce un descuento con sabor.

0

Como una secuencia de comandos ad-hoc que sólo puede ejecutar esto en la cadena antes de ejecutar la secuencia de comandos de reducción del precio

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

Basado en github flavored markdown

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

PS No soy el mejor en regex y no sé qué lenguaje de programación usa github así que improvisé

Cuestiones relacionadas