Napisałem własną implementacje BBCode:
<?php
function bbcode($tekst) {
$tekst = htmlspecialchars($tekst); Wyłączenie możliwości stosowania znaczników HTML
$tekst = preg_replace("#(.*?)#si", "<b>1</b>", $tekst); Pogrubiony tekst
$tekst = preg_replace("#(.*?)#si", "<i>1</i>", $tekst); Pochylony tekst
$tekst = preg_replace("#(.*?)#si", "<u>1</u>", $tekst); Podkreślony tekst
$tekst = preg_replace("#[quot](.*?)[/quot]#si", "<blockquot>1</blockquot>", $tekst); Cytat
$tekst = preg_replace("#[code](.*?)[/code]#si", "<pre>1</pre>", $tekst); Kod
$tekst = preg_replace("#(.*?)#si", "<span style=\"color: 2;\">3</span>", $tekst); Kolor tekstu
$tekst = preg_replace("#(.*?)#si", "<span style=\"font-size: 2;\">3</span>", $tekst); Czcionka
$tekst = preg_replace("#[ul](.*?)[/ul]#si", "<ul>1</ul>", $tekst); Ponumerowanie
$tekst = preg_replace("#[ol](.*?)[/ol]#si", "<ol>1</ol>", $tekst); Wypunktowanie
$tekst = preg_replace("#[li](.*?)[/li]#si", "<li>1</li>", $tekst); Punkt
$tekst = preg_replace("#[img](.*?)[/img]#si", "<img src=\"1\">", $tekst); Obrazek
$tekst = nl2br($tekst); Dodanie kolejnej linii
return $tekst; Wynik
}
echo bbcode
("Tekst do sformatowania"); Wyświetlenie sformatowanego tekstu
?>
I pojawił się problem w tagu code (pre) każda linia jest poprzedzona jedną pustą linią.
Problem ten znika gdy za komentuję nl2br, ale wtedy tekst poza code nie jest łamany.
Proszę o pomoc