Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: handyHtml
Forum PHP.pl > Inne > Oceny
SHiP
Dzisiaj mam do zaprazentowania taką mini klasę, która naprawia "zepsuty" kod html. Dopisuje zamkniecia dla niezamknietych znacznikow, filtruje nazwy znacznikow i parametrow, zmienia wielkosc liter itd.

Paczka do pobrania: http://srodek.info/files/handyhtml-0.7.tar.gz
Live demo: http://srodek.info/examples/handyhtml/livedemo.php

Obsługa dosyc prosta
  1. <?php
  2. // załączamy biblioteke
  3. require 'handyhtml.class.php';
  4.  
  5. // tutaj jakis nasz kod html
  6. $code='<b>bbb<i>bibibibi</b>iii</i>';
  7.  
  8. // ktory przekazujemy do konstruktora
  9. $html = new handyHtml($code);
  10.  
  11. // wywolujemy funkcje parse() ktora zwraca poprawiony kod
  12. echo $html -> parse();
  13.  
  14. // efekt: <b>bbb<i>bibibibi</i></b>iii
  15. ?>


Gdzie czegoś takiego używac? No cóż zastosowań jest wiele. W moim przypadku oczyszczam w ten sposob kod jaki generuje moj edytor WYSIWYG. Również jezeli obcinam początek artykułu i niechcący obetnę np. znacznik <a> w połowie to handyHtml to łatnie naprawi winksmiley.jpg.

Czekam na komentarze winksmiley.jpg. Jeśli biblioteka stanie się popularna postaram się dopisać kilka dodatkowych bajerow np. sprawdzanie czy przypadkiem znacznik będący blokiem nie znajduje sie w znaczniku który blokiem nie jest itp.
phpion
Pomysł dobry, z pewnością przydatmy ale wysypuje się np. na:

i wypisuje po prostu:
  1. Edek

Ale gdyby uwzględnić wszystkie znaczniki to do oczyszczania kodu generowanego przez wysiwyg soft idealny!
SHiP
Wlasnie zapomnialem wspomnieć o konfiguracji winksmiley.jpg
W klasie mamy trzy tablice:
  1. <?php
  2. // dozwolone znaczniki
  3. public $allowedTags = Array('b','i','abbr','img','hr','br','code','object','param','span','div','dl','dt','dd','ul','li','ol','a','sub','sup','p','strong','blockquote','pre','h1','h2','h3','h4','h5','h6','h7');
  4. // dozwolone parametry
  5. public $allowedParams = Array('title','style','id','class','href','src','alt','name','value','compact');
  6. // znaczniki wymuszajacy krotki zapis (tj. zamyka sam siebie)
  7. public $forceShortForm = Array('br', 'hr');
  8. ?>


Wytarczy dopisac odpowiednie nazwy znacznikow i bedzie dzialac...
phpion
Ok, ale czy skrypt skapuje, że coś jest nie tak np. w takim kodzie:
  1. <b src="plik.jpg" value="Edek" />

Wiem, że pewnie przeginam smile.gif ale pytam z ciekawości.
SHiP
Nie smile.gif Dzięki za pomysł. W przyszłej wersji raczej to bedzie. W końcu wystarzczy stworzyc liste parametrow specjalnych dla danych znacznikow...
Kreton
Linki nie działają ?
SHiP
Hmm zmienilem serwer. DNSy szaleją(juz prawie tydzien o.O)

Paczka do pobrania: http://srodek.firmybudowlane.org/files/handyhtml-0.7.tar.gz
Live demo: http://srodek.firmybudowlane.org/examples/...ml/livedemo.php
Turgon
SHiP, skrypt głąbieje gdy mu podam np.
  1. <a href="duopa" amamamam</a

albo robi cuda z:
  1. <a href="duopa"> mamama</a

  1. <a href="duopa"> mamama </a</a>
Seth
Fajne ale... tidy" title="Zobacz w manualu PHP" target="_manual
mike
Echh, takie produkty to wynik nieznajomości języka, w którym się pisze.
Niby fajne, ale z powodu podanego przez ~Setha niemal całkowicie bezużyteczne.
vieri_pl
Hmmm, ale w sumie jak Bastion dawał swój system templat`ów to również były takie komentarze ;-] nic nie jest idealne, a ShiP usiłuję zrobić coś podobnego, lecz bardziej funkcjonalnego, sprawnego itd. No przecież to chyba możliwe? smile.gif
SHiP
Widac obaj z Bastionem nie czytamy manuala winksmiley.jpg. W każdym bądz razie nie testowałem jeszcze tidy. Jesli naprawdę sprawdza popraność znacznikow pod wzgledem blok w nie-bloku(= !valid xhtml strict) to nie ma sensu tego dalej ciągnąć. Chociaż imho dla zwyklego zielonego użytkownika wpisanie 2 funkcji bedzie prostsze niz bawienie sie w czytanie manuala.

Trzeba zrobić testy szybkosci w ab2 ale to w wolnej chwili teraz mam wazniejsze sprawy na glowie winksmiley.jpg
toolmaniak
Mnie się osobiście podoba, zarówno sam pomysł jak i wykonanie, i nie ma co się zrażać mnogościa opcji takich projektów jak Tidy, bo gdyby tak patrzeć, to chyba nie było by juz tak naprawdę nic do programowania bo niemal wszystko już gdzieś tam istnieje. Ale generalnie jest fajnie, z kodów które mu podałem ładnie wyrzucał niedomknięte tagi, no i zgadzam się również z vieri_pl bo nic nie jest tak do końca idealne, weźmy chciażby W3C validator i wklepmy taki kod do sprawdzenia

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <Meta HTTP-EQUIV="Content-Type" Content="text/html; charset=iso-8859-2;">
  3. <title>test</title>
  4. <script language="javascript" type="text/javascript">
  5. document.write('<a href="http://www.google.pl:80">google</a>');
  6. </head>


a bedzie się pluł, że znacznik
Kod
<a
nie został otworzony a próbujemy go zamknąć. Tak więc brawa ode mnie, i trzymam kciuki za rozwój. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.