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