ugrás a tartalomhoz

Szövegfájlból tartalom kinyerése

Tanul0 · 2010. Okt. 25. (H), 16.33
Üdv!

Adott egy log fájl.

test.log

ennek a tartalma lehet:

valami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodik
ezt a tartalmat betöltöm és meg szeretném benne kapni az összes .dem végű fájlnevet.

Jelenleg a kódom:
  1. $loadcontent = './test.log';   
  2. $loadcontent = file_get_contents($loadcontent);  
  3. $loadcontent = str_replace('/r/n'' '$anyad);  
  4.   
  5. preg_match_all('/("|\').+?.dem("|\')/si'$anyad$matches);  
  6.   
  7. for($i=0; $i<(count($matches)-1); $i++){  
  8.     echo $matches[$i].'<br>';  
  9. }  
de ez sajnos csak üres tömböket ad vissza.
 
1

$loadcontent = './test.log';

Tanul0 · 2010. Okt. 25. (H), 16.55
  1. $loadcontent = './test.log';     
  2. $loadcontent = file_get_contents($loadcontent);    
  3. $loadcontent = str_replace('/r/n'' '$loadcontent);    
  4.     
  5. preg_match_all('/("|\').+?.dem("|\')/si'$loadcontent$matches);    
  6.     
  7. for($i=0; $i<(count($matches)-1); $i++){    
  8.     echo $matches[$i].'<br>';    
  9. }    
Bocsánat, elfelejtettem átírni az *nyad-at, két helyen. Már picit ideges voltam, mégegyszer elnézést. A problémám továbbra is fennáll.
2

$loadcontent =

kuka · 2010. Okt. 25. (H), 16.58
$loadcontent = str_replace('/r/n', ' ', $anyad);
Mi is volt az $anyad értéke a függvény meghívása előtt?
Biztos, hogy a "/r/n" (tehát 4 karakter) karakterláncot akarod lecserélni?
preg_match_all('/("|\').+?.dem("|\')/si', $anyad, $matches);
Ha az idézőjeleket és felsővesszőket kapod el, amik a példa szövegben nincsenek, akkor miért is akarsz mást kapni?

Biztos vagy, hogy a feladat megfogalmazása nem szorul pontosításra?
3

fentebb leírtam, hogy az

Tanul0 · 2010. Okt. 25. (H), 17.11
fentebb leírtam, hogy az *nyad változó az valójában a $loadcontent, csak elfelejtettem átírni két helyen, mert ugye azért ez csak nem közösségi oldalra való, szégyenlem is magamat miatta :(

a /r/n-t azért cserélem le, mert a szövegfájlból a sortöréseket így kapom meg, és erre nincs szükségem, ezért lecserélem egy szóközre.

Igen, ez a problémám, hogy a preg_match-et sajnos nem tudom milyen pattern-t kelene neki megadni, hogy ezeket kapjam meg.
4

Nem inkább a \r\n-t kellene

neogee · 2010. Okt. 25. (H), 17.35
Nem inkább a \r\n-t kellene lecserélni? :)))
5

DE! -.-

Tanul0 · 2010. Okt. 25. (H), 17.38
DE! -.-
6

Nem igazán értem egyébként,

neogee · 2010. Okt. 25. (H), 17.43
Nem igazán értem egyébként, hogy pontosan mi lenne a log fileban, de nekem így csak a fileneveket találja meg:
  1. <?php  
  2.   
  3. $str = 'valami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodik  
  4.     valami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodik  
  5.     valami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodikvalami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodik  
  6.     valami akarmi nagmeg persze valami ezkellene-lehetbenne-szamis-123.dem ez itt folytatodik  
  7.     ';  
  8.   
  9. $pattern = '/[a-z0-9\-]+\.dem/i';  
  10. preg_match_all( $pattern , $str , $m );  
  11.   
  12. print '<pre>';  
  13. print_r($m);  
  14. print '</pre>';  
  15.   
  16. ?>  
Eredmény:
Array
(
[0] => Array
(
[0] => ezkellene-lehetbenne-szamis-123.dem
[1] => ezkellene-lehetbenne-szamis-123.dem
[2] => ezkellene-lehetbenne-szamis-123.dem
[3] => ezkellene-lehetbenne-szamis-123.dem
[4] => ezkellene-lehetbenne-szamis-123.dem
)

)
8

Köszönöm szépen! Egy picit

Tanul0 · 2010. Okt. 25. (H), 17.54
Köszönöm szépen!
Egy picit javítottam bele, de működik!
  1. $pattern = '/\s[a-z0-9._-]+\.dem/i';    
  2. preg_match_all( $pattern , $str , $m );    
Egyébként egy program fájlokat készít, aminek csak a logfájljában látom az elkészült fájlokat, és ezeket kell linkelnem, hogy letölthető legyen!

Üdv!
I(L)WL
7

Igen, ez a problémám, hogy a

kuka · 2010. Okt. 25. (H), 17.44
Igen, ez a problémám, hogy a preg_match-et sajnos nem tudom milyen pattern-t kelene neki megadni, hogy ezeket kapjam meg.
A reguláris kifejezésedben kiemelten kezeled az idezőjelet és a felsővesszőt, de a feladat leírásában nem tettel róluk említést. Erről adnál bővebb felvilágosítást?
9

Esetleg ha adnál némi

neogee · 2010. Okt. 25. (H), 17.54
Esetleg ha adnál némi támpontot, mondjuk egy példaszöveggel, hogy pontosan milyen esetekben kellene találatot kapnod a filenevek esetében, és melyek a valid filenvek és melyek nem, az sokat segítene a minta elkészítésében. :)