ForumCała strona

Nawigacja

Aktualnie online

Gości online: 14

Użytkowników online: 0

Łącznie użytkowników: 25,359
Najnowszy użytkownik: kdomi

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

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

DJPromo
05.12.2021 13:37:54
Siemka Smile co tam słychać

JazOOn
08.11.2021 23:22:32
Widzisz a ja poszedłem w logistyke i transport Grin

Gander
07.11.2021 16:29:48
Aż się łezka w oku kręci. Wpadłem sprawdzić, od kiedy robię w PHP (rok założenia konta) Wink

JazOOn
04.11.2021 22:43:11
No ale Pieka to już tu z 5 miesięcy nie był

JazOOn
21.10.2021 22:40:48
Tak ,to ten sam JazOOn Grin

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

RSS

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.153, 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 / 743 Pobrane]

Edytowane przez Gander dnia 26.10.2008 17:12:16
html5_logo_4.png.120x60_q85.png jquery.png css3_logo.png
 
gander.solutions
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl