Newsgroup: it.comp.www.php
Titolo: preg_replace help

la cosa strana è che funziona sino ad un certo punto, poi il nulla...
Sostituendo "Concorsi pubblici" con "Web-mail" fallische.
Idee?
<?
   $url  = "
http://www.agenziaentrate.it/ilwwcm/connect/Nsi/
";
   $file = fopen($url,"r");
   if ($file)
   {
     while(!feof($file))
     {
       $text = fread($file, 100000);
       $text = str_replace("\n", "", $text);
       $text = preg_replace('/(<!DOCTYPE HTML PUBLIC)(.*)(Concorsi
pubblici)/', '', $text);
echo $text;
     }
   }
   else
   {
     print "Could not open ".$url;
   }
fclose($file);
?>

 la cosa strana è che funziona sino ad un certo punto, poi il nulla...
scusa, ma cosa dovrebbe fare quel codice, e cosa invece fa?
Ciao.
Tristan

 la cosa strana è che funziona sino ad un certo punto, poi il nulla...
c'e' stato un post identico pochi giorni fa
prima raccogli tutto il testo in una variabile e poi applichi la regexp

 
$text = fread($file, 100000);
carica l'intero codice html (la pagina) nella variabile $text
       $text = str_replace("\n", "", $text);
quindi elimina tutti i fine linea (\n) ed ottieni l'intera pagina html 
scritta su un intera linea (orizzontale)
       $text = preg_replace('/(<!DOCTYPE HTML PUBLIC)(.*)(Concorsi
pubblici)/', '', $text);
quindi applico la regexp ed elimino tutto ciň che si trova tra 
"<!DOCTYPE HTML PUBLIC" e "Concorsi pubblici" sostituendolo con uno 
spazio vuoto '' ed infine stampo il restante codice html
echo $text;
e fin qui tutto ok, solo che se sostituisco "Concorsi Pubblici" con 
qualcosa piů in la non funziona, pare che il buffer si esaurisca o 
simili al ché ho aumentato la memoria disponibile in php.ini da 8 a 32 
ma nessun risultato, documentazione a tonnellate ma nessun accenno ad un 
limite della funzione preg_replace mah!

T_PAAMAYIM_NEKUDOTAYM ha scritto:

$text = fread($file, 100000);
questo non va? non capisco che intendi, tutto viene messo in $text, 
sennò non potrei stampare la pagina, il problema è che pare che 
preg_replace abbia un limite ma non trovo traccia in nessuna documentazione.

Idee?
Forse "-" e' un carattere speciale per la regexp, e dovresti quotarlo
con preg_quote? Prova a scrivere "Web.mail" invece di "Web-mail".
Tieni anche conto che "Web-mail" potrebbe essere scritto chissa' come
nel sorgente: che so, Web&lineetta;mail o qualcosa del genere.
Leonardo
-- 
Geordie - he's a man, there's little doot about't,
He's done all he can, wha' can do withoot't?
Doon there cam a blade, linkin' like me lordie,
He wad drive a trade, a' the loom of Geordie.

 Leonardo
prova ancora Sam...
ovviamente ho già escluso il problema sostituendo "Web-mail" con 
"Finanziaria 2007" o simili ma il problema persiste.

"Finanziaria 2007" o simili ma il problema persiste.
Prova a definire il problema. Cosa ti aspetteresti succedesse, e che
cosa succede?
Non e' che magari il problema e' con una espressione "greedy"?
Leonardo che, in mancanza di dati, spara a caso


 wrote:

Io ho la *netta* impressione che tu voglia qualcosa tipo
<?php
        $url = '
http://www.agenziaentrate.it/ilwwcm/connect/Nsi/
';
	$s   = 'Contenuti';
        $text = preg_match("/<!--Inizio $s -->(.*)<!-- Fine $s -->/s",
                @file_get_contents($url),$g)?$g[1]:"Couldn't open $url";
        print $text; // Charset misto, e con ancora i "\n", occhio
?>
ma non sono molto sicuro della legalita' della cosa...
Leonardo


 ma non sono molto sicuro della legalita' della cosa...
Mitico!
sulla legalità non saprei ma se ne occuperà il cliente titolare del sito 
a contattare le varie organizzazioni coinvolte (camere di commercio, 
enti pubblici e simili)
Ora dovrei solo sistemare i link e i css, vedo se ci riesco..

 "Finanziaria 2007" o simili ma il problema persiste.
La soluzione di Leonardo è certamente valida, ma credo lo sarebbe stata
anche la tua, se non avessi effettuato il replace all'interno del ciclo.
Così dovrebbe andare:
   $file = fopen($url,"r");
   $text="";
   if ($file) {
     while(!feof($file)) {
       $text .= fread($file, 10000);
       $text = str_replace("\n", "", $text);
     }
   }
   else
   {
     print "Could not open ".$url;
   }
fclose($file);
$text = preg_replace('/(<!DOCTYPE HTML PUBLIC)(.*)(Finanziaria 2007)/',
'', $text);
echo $text;
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)