Zamiana tekstu na tabelę w HTML cz. 2

18 kwietnia 2008

Okazało się, że poprzedni wpis nie wyczerpuje wszystkich możliwości. Załóżmy, że mamy poprawnie stworzoną tabelę w Wordzie i trzeba ją przenieść na swoją witrynę. Są skrypty, które potrafią czyścić zbędne formatowanie Worda. Tak jak pisałem we wcześniejszym wpisie, korzystam na stronie z edytora WYSIWYG FCKeditor i on ma opcję wklejania z Worda z usuwaniem niepotrzebnego kodu. Ale.. Już jakiś czas nie musiałem się z tym męczyć i wypadło mi z głowy, że edytor nie jest doskonały (o czym dzisiaj boleśnie sobie przypomniałem). Zostają chociażby tagi odpowiedzialne za centrowanie, wielkość i wygląd czcionek, szerokość kolumn itd. Trzeba to poprawiać ręcznie lub przez jakieś znajdź/zamień.

Ale przecież nie po to stworzono komputery żeby nam utrudniały pracę :) A więc jak poradzić sobie z problemem? Proponuję skopiować tabelkę i wkleić ją do zwykłego notatnika, jakiegoś pola textarea czy innego miejsca gdzie obiekt całkowicie straci formatowanie. Dostaniemy coś takiego:

CODE:
  1. 1.
  2.  Wojtalczyk Artur
  3. 253
  4. 2.
  5.  Wojciechowski Tomasz
  6. 251
  7. 3.
  8.  Plich Leszek
  9. 245

Tak wygląda tabelka złożona z trzech kolumn i trzech wierszy. Trzeba to teraz jakoś przywrócić do stanu używalności. Funkcja jest jeszcze prostsza niż w poprzednim wpisie. Oto ona:

PHP:
  1. function tworz_tabele($tekst, $ilosc_kolumn, $lp=false, $th=false)
  2. {
  3. $tabela='';
  4.  
  5. $tekst=preg_replace('/( |\t){2,}/', ' ', $tekst);
  6. $linie=explode("\r\n", $tekst);
  7.  
  8. if(count($linie)>0)
  9. {
  10. $licznik=1;
  11.  
  12. foreach($linie AS $wiersz)
  13. {
  14. if($wiersz=trim($wiersz))
  15. {
  16. if($licznik==1)
  17. {
  18. $tabela.="<tr>\r\n";
  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.  
  31. if($th!=false)
  32. $tabela.="<th>$wiersz</th>\r\n";
  33. else
  34. $tabela.="<td>$wiersz</td>\r\n";
  35.  
  36. if($licznik==$ilosc_kolumn)
  37. {
  38. $tabela.="</tr>\r\n";
  39. $licznik=1;
  40. $th=false;
  41. }
  42. else
  43. $licznik++;
  44. }
  45. }
  46. }
  47.  
  48. return "<table>\r\n$tabela</table>";
  49. }

Doszedł jeden parametr przekazywany do funkcji, reszta się nie zmieniła więc nie będę tego ponownie opisywał. Nowa zmienna jest potrzebna do określenia ilości kolumn w tabeli. Inaczej skrypt nie wiedziałby w którym miejscu przejść do nowego wiersza bo w przekazywanym tekście każda komórka to nowa linia.

I już :) Kolejny prosty acz funkcjonalny i pomocny skrypcik.

Standardowo działanie można przetestować od razu na blogu:

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


Ten wpis nie ma komentarzy... ale możesz być pierwszy

Odpowiedz



Podobne wpisy: