Zamiana tekstu na tabelę w HTML

16 kwietnia 2008

Na redakcyjny e-mail nasztomaszow.pl co jakiś czas przychodzą informacje do zamieszczenia na stronie. Przeważnie są pisane w Wordzie. Problem pojawia się gdy do newsa trzeba przekopiować tabelkę :/ Pół biedy gdy taka tabelka jest poprawnie stworzona w dokumencie Word bo używam wizualnego edytora online o nazwie FCKeditor. Ma on prosty w obsłudze skrypcik wywalający zbędne formatowanie i jest po sprawie. Niestety... Niektórzy nie wiedzą chyba co to tabelka w Word i nawalają mnóstwo spacji lub tabulatorów :/ Wygląda to mniej więcej tak:

CODE:
  1. 1. WIKING KADET             15        26        26:10
  2. 2. HUBAL               14        26        25:11
  3. 3. EXTOM                14        25        24:8
  4. 4. TKKF ZNP              14        25        22:8
  5. 5. POLSKÓR              14        24        22:9
  6. 6. JUNIOR               15        23        18:16

Piękne prawda? :/ Płakać mi się chce gdy dostaję info z kilkunastoma tabelami i muszę to wsadzić w HTML :/ Dzisiaj przebrała się miarka... :)

Napisałem sobie funkcję. Prymitywną lecz wystarczającą dla moich potrzeb :) Zamienia powyższe dziadostwo na ładną tabelkę w HTML. Oto jej kod:

PHP:
  1. function tworz_tabele($tekst, $lp=false, $th=false)
  2. {
  3. $tabela='';
  4.  
  5. $tekst=preg_replace('/( |\t){2,}/', chr(160), $tekst);
  6. $wiersze=explode("\r\n", $tekst);
  7.  
  8. if(count($wiersze)>0)
  9. {
  10. foreach($wiersze AS $wiersz)
  11. {
  12. if($wiersz=trim($wiersz))
  13. {
  14. $tabela.="<tr>\r\n";
  15. $kolumny=explode(chr(160), $wiersz);
  16.  
  17. if(count($kolumny)>0)
  18. {
  19. if($lp!==false)
  20. {
  21. if($th!=false)
  22. $tabela.="<th>LP</th>\r\n";
  23. else
  24. {
  25. $tabela.="<td>$lp</td>\r\n";
  26. $lp++;
  27. }
  28. }
  29.  
  30. foreach($kolumny AS $komorka)
  31. {
  32. if($komorka=trim($komorka))
  33. {
  34. if($th!=false)
  35. $tabela.="<th>$komorka</th>\r\n";
  36. else
  37. $tabela.="<td>$komorka</td>\r\n";
  38. }
  39. }
  40. if($th!=false)
  41. $th=false;
  42. }
  43. $tabela.="</tr>\r\n";
  44. }
  45. }
  46. }
  47.  
  48. return "<table>\r\n$tabela</table>";
  49. }

Funkcja przyjmuje trzy parametry z czego dwa są opcjonalne. Pierwszy, obowiązkowy, to oczywiście tekst, który ma zostać zamieniony na tabelę. Parametr drugi decyduje czy ma zostać utworzona dodatkowa kolumna numerująca wiersze. Numerowanie rozpocznie się od tej liczby, którą przekażesz do funkcji. Parametr trzeci, jeżeli ustawimy go na "true", sprawi, że pierwszy wiersz zostanie potraktowany jako nagłówek tabeli.

I to byłoby na tyle :) Nic odkrywczego, kod pisany "na kolanie" bo się spieszyło. Ale może komuś się przyda. Mi na pewno :)

EDIT
W kolejnym wpisie pod tytułem "Zamiana tekstu na tabelę w HTML cz. 2" zamieściłem rozwiązanie podobnego problemu, również z tabelkami z Worda :) Jeżeli powyższy skrypt Cię nie satysfakcjonuje to zajrzyj tam.

Funkcję z tego wpisu można przetestować poniżej:

utwórz kolumnę numerującą od jakiej liczby rozpocząć?
pierwszy wiersz jako nagłówek


Dodaj komentarz

4 odpowiedzi dla tego wpisu

  1. Załamany napisał:

    O Ty w morde… A ja właśnie czegoś takiego szukałem! ;) Mam do przerobienia 15 takich tabel, każda po kilkadziesiąt wierszy… Usiadłem i się załamałem… A szef chce to na wczoraj ;/ Wielkie dzieki!!

  2. burtek napisał:

    O ziomek… Dzięki wielkie… Na stronkę tabelę musiałem wrzucić zapisałem w wordzie jako html, to mi plik wyrzucił jakieś motywy czy css-y… Wielkie dzienx!!!

  3. webmaster napisał:

    przerobiłem to na javascript :-)
    zainteresowani piszcie na www@sc.org.pl

  4. MariuszT napisał:

    Powinieneś to opublikować w komentarzu :)

Odpowiedz



Podobne wpisy: