Poprawka BBCode.
Przed wczoraj, kiedy dodawałem notkę odnośnie funkcji skracające zorientowałem się że moja funkcja BBCode dla tagów php jest lekko kulawa. Okazało się, że kolorowanie każdej lini po kolei nie jest dobrym rozwiązaniem. Przy lini typu:
/**
Nie wyświetlało jej, ponieważ było brane do kolorowania A jak wiadomo taki kod jest błędny, bo nie ma zakończenia komentarza przed końcem kodu php. Byłem zmuszony porzucić wygodne rozwiązanie na liście i rozwiązać to w inny sposób.
Jako że kiedyś spotkałem się z wstawianiem numerków linii jako obrazków numerowanie przestało być problemem, jedynie wystarczyło opatrzyć to wszystko ładnie w kod i działa, nawet poprawnie ze standardami. W tej części opisze to co opisywałem dwa dni temu. Otóż pisałem wtedy o funkcji skracającej/łamiącej długie wyrazy. Funkcja przydająca się przy długich urlach - jak choćby googlowski kalendarz, ale nie tylko bo również przy komentarzach. Czasami trafiają się boty, bądź złośliwcy wstawiający tasiemce, które czasami rozwalają stronę.
Idea ogólnie jest bardzo prosta, przyjmuje trzy parametry:
- tekst
- ilość znaków, po której ma uciąć/złamać
- bool (true/false) - czy ma skrócić czy złamać tekst
Moje rozwiązanie:
- /**
- * Funkcja skracająca/łamiąca długie wyrazy
- *
- * @param string tekst
- * @param int ilość znaków
- * @param bool łam/skróć
- * @return string poprawiony - skrócony/złamany tekst
- */
- function wrap($tekst, $znakow = 60, $lam = true)
- {
- $nowy = '';
- {
- {
- if( $lam == true )
- {
- $nowy .= ' ' . wordwrap( $podziel[$i], $znakow, '<p style="margin:0; padding: 0;"></p><strong style="color: red;">></strong>',1 );
- }
- else
- {
- // Zabezpieczenie przed powtórzeniem końca
- {
- }
- else
- {
- }
- }
- }
- else
- {
- $nowy .= ' ' . $podziel[$i];
- }
- }
- return $nowy;
- }
Wywołanie:
Wynik:
- qwertyuiopasdfghjklzxcv
- >bnm0123456789
- qwertyuiopasdfghjklzxcv(...)6789


Ostatnie odpowiedzi
10 tygodni 6 dni temu
37 tygodni 6 dni temu
47 tygodni 1 dzień temu
1 rok 1 tydzień temu
1 rok 7 tygodni temu
1 rok 7 tygodni temu
1 rok 13 tygodni temu
1 rok 13 tygodni temu
1 rok 28 tygodni temu
1 rok 28 tygodni temu