ForumCała strona

Nawigacja

Aktualnie online

Gości online: 23

Użytkowników online: 1
adi

Łącznie użytkowników: 25,405
Najnowszy użytkownik: kipolas

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

jantom
07.09.2025 09:40:31
Strona z niebytu wrocila, ciekawe kiedy polskie literki rowniez...

JazOOn
25.06.2025 23:43:19
Dziadziejemy jantom...

jantom
23.06.2025 21:37:31
Z ciekawo?ci pogrzeba?em w historii i jest gorzej ni? my?la?em. Skórka Nadzieja ma ju? 17 lat.

jantom
23.06.2025 21:33:12
... troch? zasiedzia?o Wink

jantom
23.06.2025 21:32:38
Cecha tego, jak z 20+ lat temu pisano strony - tabelki wsz?dzie, szczególnie do tworzenia uk?adów stron. PF d?ugo by? wierny tej tradycji. A obecny szablon Supportu napisa?em z 15 lat temu i chyba mu

Pobierz now? wersj?
Pobierz podr?cznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
Cutter - klasa tn?ca
Gander
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.

Pobierz kod źródłowy  GeSHi: PHP
  1. require_once "class.cutter.php";
  2. $c = new cutter('http://www.example.com/index.php', true);
  3. $c -> start("<body>", false, 1);
  4. $c -> end("</body>", false, -1);
  5. $c -> replace("<br>","<br />");
  6. $c -> delete("<hr>");
  7. echo $c->cut();
  8. $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:
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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:
  1. po??czenie funkcji cut() z cutall() oraz zawsze zwracanie wyniku jako array
  2. wszystkie operacje wykonywane dopiero w poleceniu cut()
  3. kolejkowanie polece? (obecnie wykonuj? si? najpierw replace, potem delete)
  4. dodanie wyra?e? regularnych do wyszukiwania, zamiany i kasowania ci?gów
  5. tryb debug w wersjach "do pliku" i "na ekran"
Gander dodał/a następującą plik:
class_cutter.zip [1.89kB / 1124 Pobrane]

Edytowane przez Gander dnia 26.10.2008 17:12:16
 
gander.solutions
W?cibski Go??
Dodany dnia 11.09.2025 01:08:23
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl