ForumCała strona

Nawigacja

Aktualnie online

Gości online: 27

Użytkowników online: 0

Łącznie użytkowników: 25,400
Najnowszy użytkownik: AlojzyBartek

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

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

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

piterus
30.10.2024 19:45:48
I będziemy śpiewać: "Kiedy 20 blisko, przebadaj wszystko, przebadaj wszystko..." Pfft

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.022, 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 / 1055 Pobrane]

Edytowane przez Gander dnia 26.10.2008 17:12:16
 
gander.solutions
Wścibski Gość
Dodany dnia 24.11.2024 16:01:31
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