wyrażenia regularne, błąd przy enter

0

cześć. poprzez IMAP dostaje się na konto pocztowe i zczytuje maile, następnie treść maili jest przepuszczana przez preg_match (porównuje i zapisuje znaleziony patern) i tu sie pojawia problem bo w mailu szukam linków, znajduje linki ale jeśli pojawi się enter w pliku to link urywa :(. szukałem po forach i było dodać s po ogranicznikach ale nie działa... może źle to impementuje ? proszę podpowiedźdcie gdzie jest błąd.

oto kod


<?php
                     //{nazwaPOP3serwera:port/pop3}skrzynkaOdbiorcza,login,pass
    IF($mbox = imap_open("{mail.slopiec.pl:995/pop3/ssl/novalidate-cert}INBOX", "[email protected]", $pass)) 
        {
        echo 'Połączenie nawiązane';
        //zwraca info o skrzynce np.: date ostatniej zmiany na skrzynce, nazwe skrzynki, nmsg, czyli ile maili jest, ile zajete miejsca, przeczytane i nieprzeczytane
        $check = imap_mailboxmsginfo($mbox);
        IF(is_numeric($check->Nmsgs))// zwraca true jeśli Nmsgs jest liczbą, czyli są maile 
            {
                 imap_savebody (  $mbox ,  $plik , $i); // zapisuje maila do pliku
            }
        imap_close($mbox); // zamyka polaczenie
        fclose ($plik );
        }
    else
        {
        print_r(imap_errors());
        }
//} //end of for

////////////////////////////////////////////////////////////////////////////////////////// maile zapisane do pliku
$filename="D:/tresc.txt";
$plik=fopen($filename,"r");
$tresc=fread(  $plik , filesize($filename) );
echo $tresc;
$pattern = '#[htp:]+\/{2}t{1}\.?[nivea]+\.+[pl]{2}+\/{1}[click]+\/{1}[a-zA-Z0-9\%\?\=]+#s'; // # to ograniczniki, s za ogranicznikiem ma ignorować enter ale nie działa!

preg_match_all($pattern, $tresc, $matches, PREG_OFFSET_CAPTURE);

...

?>
0

a może nie edytować wyrażenia tylko zacząc formatować plik z treścia maila zeby enterów nie było ?

0

Spróbuj przełącznika m (multiline), a jak nie podziała, to usuń entery z tekstu przed preg_match

0

Ja proponuję użyć funkcji str_replace

przykład przed preg_match_all:

$string = str_replace(array("\n","\r"),array("~N~","~R~"),$string);

i odwrotnie:

$string = str_replace(array("~N~","~R~"),array("\n","\r"),$string);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0