Formatage commentaire
Posté : 09 mai 2014, 12:39
Bonjour, j'ai un souci avec mes expressions régulière pour le formatage de text plain en p html pour l'affichage formater des commentaires, voici mes functions :
EDIT : '$string = preg_replace("/^(<pre class=\"code\">)(.*)\n?/i", "<p>$2</p>\n", $string);' c'est la dernière regex tester ... résultat null :/ merci d'avance !
function _clean($string) {
$string = preg_replace("/[\\\]+n/i", "\n", $string);
$string = preg_replace("/[\\\]+r/i", "\r", $string);
$string = stripslashes($string);
return $string;
}
function _format($string) {
$string = _clean($string);
$string = preg_replace("/\n(?=(?:.(?!\[code\]))*\[\/code\])/Ums", "[t]", $string); // Protection des \n dans les pre
$string = preg_replace("/\r(?=(?:.(?!\[code\]))*\[\/code\])/Ums", "[t]", $string); // protection des \r dans les pre
$string = preg_replace("/(\r|\n)+/", "\n", $string); // suppression des \n et \r dans le text plain
$string = preg_replace("/^([ ])+/", "", $string); // suppression des espaces en début de ligne dans le text plain
$string = preg_replace(array("/(\[t\])?\[code\]/i", "/\[\/code\]/i"), array("<pre class=\"code\">", "</pre>"), $string); // remplacement du bbcode
$string = preg_replace(array("/\[b\]/i", "/\[\/b\]/i"), array("<strong>", "</strong>"), $string);
$string = preg_replace("/^(<pre class=\"code\">)(.*)\n?/i", "<p>$2</p>\n", $string);
// $string = preg_replace("/\n(?=(?:.(?!<p>))*<\/p>)/Ums", "", $string);
// $string = preg_replace("/^([^<]+)\n?/i", "<p>$1</p>", $string);
$string = preg_replace("/\[t\](?=(?:.(?!<pre class=\"code\">))*<\/pre>)/U", "\n", $string); // Formatage du pre avant le hightlight code
$string = preg_replace("/(\n){2,}(?=(?:.(?!<pre class=\"code\">))*<\/pre>)/Ums", "\n", $string);
return $string;
}
Mon souci est au niveau des deux preg_replace commenter, je n'arrive pas à dissocier le text plain qui ne doit pas remplacer ni intéragir avec les balises pre, mais doit ce comporter par ligne unique ...EDIT : '$string = preg_replace("/^(<pre class=\"code\">)(.*)\n?/i", "<p>$2</p>\n", $string);' c'est la dernière regex tester ... résultat null :/ merci d'avance !