
Bywalec

Postów: 720 Pomógł: 37
Data rejestracji: 22.05.2005 23:17
|
Chcia?em przedstawi? wykonan? przez siebie klas? cutter. U?ywam jej do pobierania dok?adnie okre?lonych wycinków z wczytanego ci?gu, pliku tekstowego lub strony html. Na pocz?tku by?a to pojedyncza funkcja z ogromem parametrów, jednak?e trudno?? jej u?ywania sk?oni?a mnie do przepisania tego na posta? obiektow?.
U?ytkowanie tej klasy jest bardzo proste, wystarczy zapami?ta? tylko kilka polece? i ju? mo?na efektywnie uzyskiwa? wyniki wed?ug zadanych kryteriów.
GeSHi: PHPrequire_once "class.cutter.php"; $c = new cutter('http://www.example.com/index.php', true); $c -> start("<body>", false, 1); $c -> end("</body>", false, -1); $c -> replace("<br>","<br />"); $c -> delete("<hr>"); echo $c->cut(); $result = $c->cutall();
Zinterpretowano w sekund: 0.024, wykorzystano GeSHi 1.0.8.10
Podany kod pobiera zawarto?? strony http://www.example.com/index.php, nast?pnie ustala ?e tekst do wyci?cia znajduje si? mi?dzy znacznikami <body> i </body>. Dodatkowo zamienia wszystkie znaczniki <br> na <br /> i usuwa <hr>. Na koniec wy?wietla wynik na ekranie.
Przeanalizujmy podany kod:
- Nale?y za??czy? plik zawieraj?cy definicj? klasy do pliku w którym chcemy wykorzystywa? t? klas?. Mo?na te? j? za??cza? w pliku maincore.php, dzi?ki czemu b?dziemy mogli z niej korzysta? na ka?dej podstronie portalu.
- Polecenie new cutter() tworzy nowy obiekt cutter. Pierwszy parametr typu string ustala ?ród?o, czyli ci?g, który b?dziemy przeszukiwa?. ?ród?em mo?e by? tak?e lokalny plik lub zewn?trzna witryna www (tak jak to prezentuj? w podanym przyk?adzie). Drugi parametr typu boolean okre?la czy ?ród?o jest ci?giem, plikiem lokalnym czy stron? zewn?trzn?. Warto?? true dotyczy tylko plików i stron.
- Polecenie start() ustala parametry wyszukiwania pocz?tku tekstu do wyci?cia. Pierwszy parametr typu string ustala ci?g, od którego zaczyna si? wyszukiwany tekst. Drugi parametr typu boolean okre?la czy ten ci?g ma by? zawarty w wyniku. Trzecim parametrem typu integer okre?lamy offset wycinania.
- Polecenie end() ustala parametry wyszukiwania ko?ca tekstu do wyci?cia. Pierwszy parametr typu string ustala ci?g, którym ko?czy si? wyszukiwany tekst. Drugi parametr typu boolean okre?la czy ten ci?g ma by? zawarty w wyniku. Trzecim parametrem typu integer okre?lamy offset wycinania.
- Polecenie replace() umo?liwia zamian? ci?gów w wyniku. Pierwszy parametr typu string ustala ci?g do znalezienia, a drugi parametr równie? typu string ustala ci?g, na który ma zosta? zamieniony znaleziony ci?g.
- Polecenie delete() robi prawie to samo co polecenie replace(), ale jak nazwa wskazuje, usuwa znaleziony ci?g. To polecenie przyjmuje dowoln? ilo?? parametrów typu string, okre?laj?cych ci?gi do usuni?cia.
- Polecenie cut() powoduje zwrócenie poszukiwanego ci?gu, lub warto?? false je?li operacja wyszukiwania si? nie powiedzie. Opcjonalny pierwszy parametr typu boolean okre?la, czy wynik ma zosta? równie? zapisany jako nowe ?ród?o do wyszukiwania. Jest to przydatne, gdy chcemy stopniowo przycina? ?ród?o, na przyk?ad gdy jego struktura uniemo?liwia uzyskanie od razu poszukiwanego ci?gu. Domy?lna warto?? tego parametru to false.
- Polecenie cutall() jest podobne do polecenia cut(), jednak?e zwraca tablic? (typ array) wszystkich ci?gów znalezionych w danym ?ródle. Nie wolno podawa? w niej ?adnych parametrów, gdy? jest to funkcja rekurencyjna.
I to w sumie chyba wszystko...
Dodam jeszcze, ?e cutter posiada opcj? debugowania w celu szybkiego lokalizowania b??dów u?ytkownika (o tak, najcz??ciej to my si? mylimy, nie maszyny). ?eby to uruchomi?, nale?y na serwerze, w katalogu w którym u?ytkowany jest cutter, utworzy? plik o nazwie debug.log i nada? mu prawa chmod 777, a w poleceniu cutter() poda? trzeci parametr o warto?ci true. Generowana zawarto?? powinna by? w miar? zrozumia?a...
Planowane zmiany w projekcie:
- po??czenie funkcji cut() z cutall() oraz zawsze zwracanie wyniku jako array
- wszystkie operacje wykonywane dopiero w poleceniu cut()
- kolejkowanie polece? (obecnie wykonuj? si? najpierw replace, potem delete)
- dodanie wyra?e? regularnych do wyszukiwania, zamiany i kasowania ci?gów
- tryb debug w wersjach "do pliku" i "na ekran"
Gander dodał/a następującą plik:
Edytowane przez Gander dnia 26.10.2008 17:12:16
|