[PHP] BBcode

0

Witam napisałem sobie taką fukcje:

function BBCode($tekst){
$tekst = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tekst);
$tekst = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tekst);
 return($tekst);
}

I teraz mam plik którego struktura wygląda tak:

 bla bla
bla
[b]bla bla[/b]
[b]coś 
coć
coś
[/b]

i próbuję go wyświetlić tak:

$plik = $file;
$dane = file($plik);

for($i = 0; $i < $count($dane); $i++)
{
  echo BBCode($dane[$i]);
}

I tam gdzie w pliku między tagami do pogrubienia była linia nie łamana wszystko działa dobrze i tekst jest pogrubiony ale tam gdzie było "[b]coś
coć
coś
[/b]" już nie i wyświetla się to dokładnie w takiej formie bez zmiany na pogrubienie. Czy ktoś może mi powiedziec dlaczego tak się dzieje i jak to naprawić? Z góry dziękuję za odpowiedź.

0

Bo wczytujesz liniami i wyrażenie regularne nie dopasuje Ci takiej linii, w której rozpoczniesz [b] i nie zakończysz jednocześnie [/b] w tej samej linii. Zamiast funkcji file użyj file_get_contents i zrezygnuj z pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1