Nouvelle ligne de l'alinéa fonction

J'ai cette fonction intéressante que j'utilise pour créer de nouvelles lignes dans les paragraphes. Je l'utilise à la place de la nl2br() fonction, comme il ne sort mieux du texte formaté.

function nl2p($string, $line_breaks = true, $xml = true) {

$string = str_replace(array('<p>', '</p>', '<br>', '<br />'), '', $string);

//It is conceivable that people might still want single line-breaks
//without breaking into a new paragraph.
if ($line_breaks == true)
    return '<p>'.preg_replace(array("/([\n]{2,})/i", "/([^>])\n([^<])/i"), array("</p>\n<p>", '<br'.($xml == true ? ' /' : '').'>'), trim($string)).'</p>';
else 
    return '<p>'.preg_replace(
    array("/([\n]{2,})/i", "/([\r\n]{3,})/i","/([^>])\n([^<])/i"),
    array("</p>\n<p>", "</p>\n<p>", '<br'.($xml == true ? ' /' : '').'>'),

    trim($string)).'</p>'; 

}

Le problème est qu'à chaque fois que j'essaie de créer un seul saut de ligne, il a involontairement supprime le premier caractère du paragraphe ci-dessous il. Je ne suis pas assez familier avec la regex pour comprendre ce qui est à l'origine du problème.

InformationsquelleAutor Jeremy | 2011-09-13