Witam ponownie.
Po zabawach ze skryptem z pierwszego postu, wykombinowałem takie coś, potraktowałem to funkcją "serialize" i działa tak jak powinno.
Szuka zadanego 'regexp' i wpisuje do pliku tak jak trzeba:
Tak wygląda teraz kod:
CODE
function zdobadz_email()
{
$sprawdz = '/[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}/';
$plik = fopen('testowy.txt','r');
$moj_plik = fopen('maile.txt','w+');
flock($moj_plik, 2);
$plik = file('testowy.txt') or die('Wystąpił błąd.');
echo '<ul>';
foreach($plik as $linia)
{
if(preg_match_all($sprawdz, $linia, $wynik));
$wynik = serialize($wynik);
fputs($moj_plik, $wynik);
echo '<li>'.$linia.'</li>';
}
echo '</ul>';
flock($moj_plik, 3);
fclose($moj_plik);
//unlink($moj_plik);
}
zdobadz_email();
zamiast 'foreach' to samo uzyskałem za pomocą 'while' tu fragment kodu:
CODE
while(!feof($plik))
{
$linia = fgets($plik);
preg_match_all($sprawdz, $linia, $wynik);
$wynik = serialize($wynik);
fputs($moj_plik, $wynik);
}
Teraz mam inne pytanie, funkcja 'serialize' wpisuje mi do pliku znalezione 'regexp' w formie tablicy, wygląda to tak:
a:1:{i:0;a:1:{i:0;s:22:"tchoman@poczta.onet.pl";}}a:1:{i:0;a:1:{i:0;s:10:"dd@dcc.com";}}a:1:{i:0;a:1:{i:0;s:16:"kxkxkx@lxlxlx.pl";}}
a ja bym chciał żeby skrypt wpisał to do pliku .txt w postaci stringa
-tchoman@poczta.onet.pl
-dd@dcc.com"
-kxkxkx@lxlxlx.pl
jak przerobić kod?
Witam ponownie
Z powyższym już też sobie poradziłem, a mianowicie tak:
CODE
if(preg_match($sprawdz, $linia, $wynik));
{
//$wynik = serialize($wynik);
$wynik = implode(",", $wynik); //z 'preg_match' wywaliłem 'all' i wtedy za 'serialize' da się wykorzystać 'implode'
fputs($moj_plik, $wynik); // i wtedy ładnie zapisuje do .txt string
}
echo '<li>'.$linia.'</li>';
Ale pojawia się mały problem, 'include' jako 1 paramert może dostać separator, ja bym chciał żeby każdego 'regexp' wpisało do nowego wiersza, ale w tym przypadku nawet zwykły
"-" nie działa, niezależnie jaki separator próbuję wpisać dalej wyświetla wszystko w ciągu bez separacji.
Jak prawidłowo to zrobić ?
Edit: I z tym sobie poradziłem, trzeba tak to wpisać
$wynik = implode($wynik)."\r\n";
Ale swoją drogą wie ktoś dlaczego separator w 'implode' nie zadziałał?