Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenie regularne - ścieżka do pliku, Przeszukiwanie ciągu znaków w poszukiwaniu ściezki do plików.
manhunto
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.10.2011

Ostrzeżenie: (0%)
-----


Witam. Chciałbym, aby z wklejonej listy, skrypt wybrał ścieżkę do plików z rozszerzeniem *.job.
Próbowałem już przeróżnych wyrażeń, ale żaden nie dał oczekiwanego efektu. Wszystko testowałem na stronie : http://gskinner.com/RegExr/ (na niej wszystko jest okej, zreszta na innych tego typu tez).
  1. $wzorzec = '#(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*.*))+\.job#';
  2. preg_match_all($wzorzec, $text, $job);
  3. print_r($job);
przy powyższym kodzie dostaje błąd:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: unmatched parentheses at offset 40 (...)
Przykładowy tekst który z którego ma mi wyłapać w/w ściezki:
CODE
[2011-11-12 23:17:12 | 000,000,664 | ---- | M] () -- C:\WINDOWS\System32\d3d9caps.dat
[2011-11-12 23:09:12 | 000,000,462 | -H-- | M] () -- C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
[2011-11-12 22:48:00 | 000,001,036 | ---- | M] () -- C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
[2011-11-12 21:48:00 | 000,001,032 | ---- | M] () -- C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
[2011-11-11 15:32:54 | 000,002,048 | --S- | M] () -- C:\WINDOWS\bootstat.dat
[2011-11-10 21:29:07 | 000,106,496 | ---- | M] () -- C:\Documents and Settings\pavel\Ustawienia lokalne\Dane aplikacji\DCBC2A71-70D8-4DAN-EHR8-E0D61DEA3FDF.ini
[2011-11-09 23:10:20 | 000,002,206 | ---- | M] () -- C:\WINDOWS\System32\wpa.dbl
[2011-11-03 19:36:24 | 000,513,146 | ---- | M] () -- C:\WINDOWS\System32\perfh015.dat
[2011-11-03 19:36:24 | 000,432,690 | ---- | M] () -- C:\WINDOWS\System32\perfh009.dat
[2011-11-03 19:36:24 | 000,093,020 | ---- | M] () -- C:\WINDOWS\System32\perfc015.dat
[2011-11-03 19:36:24 | 000,067,646 | ---- | M] () -- C:\WINDOWS\System32\perfc009.dat
[2011-11-02 23:03:15 | 001,165,713 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\gangsta.mp3
[2011-11-01 17:58:59 | 004,475,532 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Wszystko ma swój koniec_mixdown .mp3
[2011-10-31 20:49:03 | 000,000,000 | ---- | M] () -- C:\Documents and Settings\pavel\Moje dokumenty\afsghaua8aadsfuidsfguiogu.mp3
[2011-10-28 18:08:37 | 000,002,267 | ---- | M] () -- C:\Documents and Settings\All Users\Pulpit\Skype.lnk
[2011-10-25 13:28:47 | 004,625,017 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Mój Cel_mixdown.mp3
[2011-10-25 12:37:07 | 000,000,284 | ---- | M] () -- C:\WINDOWS\tasks\AppleSoftwareUpdate.job
[2011-10-25 10:59:17 | 004,113,529 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\West obrona_mixdown.mp3
[2011-10-24 21:20:49 | 003,100,057 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Domówka_mixdown.mp3
[2011-10-24 21:11:24 | 004,485,913 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Zapomnij o Niej_mixdown.mp3
[2011-09-23 17:25:05 | 010,045,674 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Milion Skojarzeń_mixdown.mp3
[2011-09-18 10:25:40 | 000,000,724 | ---- | M] () -- C:\Documents and Settings\All Users\Pulpit\Mozilla Firefox.lnk
[2011-09-17 12:48:39 | 000,000,000 | -H-- | M] () -- C:\WINDOWS\System32\drivers\UMDF\Msft_User_WpdMtpDr_01_00_00.Wdf
C:\tasks\*.job
C:\tasks\test test test.job

Jedynie przy poniższym wyłapuje mi same nazwy:
  1. $wzorzec = '#[a-zA-Z0-9-_\{\}\* ]*\.job#';
Próbowałem już przeróżnych wyrażeń, proszę o pomoc.
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Jeśli te dane czytasz z pliku, to zamiast męczyć się z odpowiednim wyrażeniem regularnym sprawdź tylko czy w bieżącej przeszukiwanej linii znajduje się ciąg z odpowiednim rozszerzeniem.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
manhunto
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.10.2011

Ostrzeżenie: (0%)
-----


Czytam to ze strony np wklej.org, a chce to miec wypisane w takiej formie:

C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
C:\tasks\*.job
C:\tasks\test test test.job

więc i tak bym musiał potem usuwać te zbędne znaki przed ścieżką.
Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Kod
<?php


$str = '[2011-11-12 23:17:12 | 000,000,664 | ---- | M] () -- C:\WINDOWS\System32\d3d9caps.dat
[2011-11-12 23:09:12 | 000,000,462 | -H-- | M] () -- C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
[2011-11-12 22:48:00 | 000,001,036 | ---- | M] () -- C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
[2011-11-12 21:48:00 | 000,001,032 | ---- | M] () -- C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
[2011-11-11 15:32:54 | 000,002,048 | --S- | M] () -- C:\WINDOWS\bootstat.dat
[2011-11-10 21:29:07 | 000,106,496 | ---- | M] () -- C:\Documents and Settings\pavel\Ustawienia lokalne\Dane aplikacji\DCBC2A71-70D8-4DAN-EHR8-E0D61DEA3FDF.ini
[2011-11-09 23:10:20 | 000,002,206 | ---- | M] () -- C:\WINDOWS\System32\wpa.dbl
[2011-11-03 19:36:24 | 000,513,146 | ---- | M] () -- C:\WINDOWS\System32\perfh015.dat
[2011-11-03 19:36:24 | 000,432,690 | ---- | M] () -- C:\WINDOWS\System32\perfh009.dat
[2011-11-03 19:36:24 | 000,093,020 | ---- | M] () -- C:\WINDOWS\System32\perfc015.dat
[2011-11-03 19:36:24 | 000,067,646 | ---- | M] () -- C:\WINDOWS\System32\perfc009.dat
[2011-11-02 23:03:15 | 001,165,713 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\gangsta.mp3
[2011-11-01 17:58:59 | 004,475,532 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Wszystko ma swój koniec_mixdown .mp3
[2011-10-31 20:49:03 | 000,000,000 | ---- | M] () -- C:\Documents and Settings\pavel\Moje dokumenty\afsghaua8aadsfuidsfguiogu.mp3
[2011-10-28 18:08:37 | 000,002,267 | ---- | M] () -- C:\Documents and Settings\All Users\Pulpit\Skype.lnk
[2011-10-25 13:28:47 | 004,625,017 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Mój Cel_mixdown.mp3
[2011-10-25 12:37:07 | 000,000,284 | ---- | M] () -- C:\WINDOWS\tasks\AppleSoftwareUpdate.job
[2011-10-25 10:59:17 | 004,113,529 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\West obrona_mixdown.mp3
[2011-10-24 21:20:49 | 003,100,057 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Domówka_mixdown.mp3
[2011-10-24 21:11:24 | 004,485,913 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Zapomnij o Niej_mixdown.mp3
[2011-09-23 17:25:05 | 010,045,674 | ---- | M] () -- C:\Documents and Settings\pavel\Pulpit\Milion Skojarzeń_mixdown.mp3
[2011-09-18 10:25:40 | 000,000,724 | ---- | M] () -- C:\Documents and Settings\All Users\Pulpit\Mozilla Firefox.lnk
[2011-09-17 12:48:39 | 000,000,000 | -H-- | M] () -- C:\WINDOWS\System32\drivers\UMDF\Msft_User_WpdMtpDr_01_00_00.Wdf
C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
C:\tasks\*.job
C:\tasks\test test test.job';


preg_match_all('#([a-z]:\\\.*\.job)#is', $str, $matches);


echo '<pre>'.print_r($matches, true).'</pre>';
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Moja propozycja:

  1. preg_match_all('/([a-z]{1}:[^\|\s\n]+\.job)/Usi', $str, $matches);
  2.  
  3. echo '<pre>'.print_r($matches, true).'</pre>';


Daje zawsze tylko pliki z rozszerzeniem *.job

Dla kodu z poprzedniego postu:

Kod
Array
(
    [0] => Array
        (
            [0] => C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
            [1] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
            [2] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
            [3] => C:\WINDOWS\tasks\AppleSoftwareUpdate.job
            [4] => C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
            [5] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
            [6] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
            [7] => C:\tasks\*.job
        )

    [1] => Array
        (
            [0] => C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
            [1] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
            [2] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
            [3] => C:\WINDOWS\tasks\AppleSoftwareUpdate.job
            [4] => C:\WINDOWS\tasks\User_Feed_Synchronization-{9A82595E-375A-4CD9-9E7C-BF6C8863F30A}.job
            [5] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineUA.job
            [6] => C:\WINDOWS\tasks\GoogleUpdateTaskMachineCore.job
            [7] => C:\tasks\*.job
        )

)


EDIT: mała poprawka tongue.gif

Ten post edytował Sephirus 15.11.2011, 08:54:21


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
manhunto
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 12.10.2011

Ostrzeżenie: (0%)
-----


@Sephirus: Twóje wyrażenie działa tak jak chciałem! Dzięki.
Ps. Co oznacza "Usi" na końcu Twojego wyrażenia? Za co jest opdowiedzialne?

@DOWN: Dzięki, właśnie nie wiedziałem jak to się fachowo nazywa, żeby to wyszukać. Temat można zamknąć.

Ten post edytował manhunto 15.11.2011, 16:36:15
Go to the top of the page
+Quote Post
Pawel_W
post
Post #7





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/reference.pcre.pa...n.modifiers.php
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:52