The Essence of Programming

Grep w PHP

07 sierpnia 2007

Zastanawialiście się kiedyś jak stworzyć narzędzie grep, tylko że w php? :) Poświęciłem chwilkę czasu i spłodziłem skrypt, dzięki któremu możemy wyszukiwać pliki(w odpowiednich katalogach), o określonym rozszerzeniu, zawierających odpowiednie wzorce(póki co nie oparte jeszcze na wyrażeniach regularnych ;)) Ruszyć powinien u każdego(pisane pod php4). Skrypt jest prosty i nie zawiera takiej funkcjonalności jak linuksowy grep, ale być może przyda się użytkownikom, którzy nie potrzebują zaawansowanych funkcji ;)

Użycie:

  1. Zapisujemy na dysku plik grep.phps(do ściągnięcia poniżej) jako grep.php
  2. Edytujemy pierwszą linijkę: #!/usr/bin/php-cgi -f wpisując ścieżkę do php w naszym systemie
  3. Nadajemy chmod 755 grep.php
  4. Uruchamiamy: ./grep.php [katalog_do_przeszukania] [wzorzec] [rozszerzenie_plikow]
    np. ./grep.php /var/www/ left_block css

Źródło: grep.phps

Komentarze:
emm [07 sierpnia 2007 20:21:17]

Proponuje zamiast opendir i readdir zastosowac DirectoryIterator

Błażej `snipe` Gruszka [07 sierpnia 2007 20:49:53]

emm: Można by zastosować DirecotryIterator ale dostępny jest on w PHP5 ;) A chodziło mi o jak największą dostępność :)

emm [07 sierpnia 2007 21:13:11]

A kto rozsadny bawi sie w php4 ?
php5 ma wszystko co 4 i jeszcze wiecej, przede wszystkim wieksza wydajnosc i OOP.
Co stoi na przeszkodzie zrobienia aktualizacji ?

Błażej `snipe` Gruszka [07 sierpnia 2007 21:15:50]

emm: zgadzam się z wszystkim co napisałeś :) pomyśle nad przerobieniem tego pod PHP5 :)

Stanisław 'dozzie' Klekot [07 sierpnia 2007 22:03:47]

> A kto rozsadny bawi sie w php4 ?

A kto rozsądny bawi się w pisanie grepa w PHP?

Błażej `snipe` Gruszka [07 sierpnia 2007 22:06:14]

dozzie: zauważ, że są wakacje – nie ma co robić ;) ludzie mają różne zwariowane pomysły :)

SirMike [08 sierpnia 2007 08:05:15]

Nie ma to jak wynajdywac kolo na nowo :) Tym bardziej, ze szansa iz bedzie ono okragle jest znikoma.

Michał Górny [08 sierpnia 2007 12:25:49]

Hosta z plikiem nie można zresolvowować — jest SERVFAIL.

Błażej `snipe` Gruszka [08 sierpnia 2007 12:27:42]

Michał: hmm… u mnie wszystko działa?? :P

Michał Górny [08 sierpnia 2007 12:32:27]

Hmm… gdzie masz DNS-a? Bo faktycznie jak mu każę serwera TP użyć, to rozwiązuje, a z głównego zestawu (tego szybkiego) to mam SERVFAIL…

Błażej `snipe` Gruszka [08 sierpnia 2007 12:36:32]

mam DNS przydzielany przez DHCP od TP. A jeśli chodzi Ci o deamona to leci przez nazwa.pl do dlk.pl ;) SERVFAIL pojawia Ci się tylko przy files.gruszka.info? Dziwne :P

Michał Górny [08 sierpnia 2007 12:39:22]

Po restarcie lokalnego DNS-a zadziałało, pewnie inny serwer odpytał. Ale i tak strange… chyba że akurat chwilowy pad był, jak odpytywałem i się zcache’owało… w każdym razie przepraszam za offtopic.

D4rky [08 sierpnia 2007 16:12:37]

Michale Górny – używaj OpenDNS ;)
Co do skryptu – bardzo, ale to bardzo przypomina mi ten, który widziałem gdzieś w manualu ;> a zamiast tych opendir itp mogłeś po prostu lecieć listę plików z glob(), a potem otwierać każdy i sprwadzać zawartość. nie wiem dlaczego sobie ludzie robotę utrudniają, wyjaśni ktoś ? :)

Błażej `snipe` Gruszka [08 sierpnia 2007 19:33:54]

D4rky: nie spoglądałem do manuala :) jak mi się będzie nudzić to poprawię ten skrypt :)

Kilka informacji o autorze

Programista, blogger, uwielbia białą czekoladę ;)