Newsgroup: it.comp.www.php
Titolo: Lettura e parsing in PHP di un campo TEXT su MySql

Ciau a tutti, dopo alcune ricerche infruttuose negli archivi dei vecchi
post vi chiedo se potete aiutarmi. Premetto che ho iniziato da poco ad
usare PHP.
Ho una pagina PHP che legge i dati su una tabella MySql e li "sputa" in
output. 
In questa tabella c'è un campo TEXT, contenente una serie di righe con
ritorno a capo; usando la funzione nl2br su $row[campo_memo] riesco a
visualizzarlo con i <br> messi correttamente.
Ora io vorrei effettuare un parse di questo campo; vorrei potermi
scorrere tutte le righe contenute e, se questa inizia con "http", vorrei
poterla mostrare come link attivo sulla pagina di output.
In pratica nel campo memo ci sono queste righe:
riga1
riga2
riga3
http://www.riga4.com
riga5
Io sono capace di buttarle in output come semplice testo ma mi
piacerebbe farmi una funzione o trovare il modo per rendere attivo il
link sulla riga4, dando per scontato che formatterò in questa maniera
solo le righe del campo TEXT che iniziano per "http". 
Spero di essermi spiegato chiaramente, e scusate se vi sembrerà una cosa
banale ma non saprei proprio da dove iniziare!
Grazie,
Wolf
-- 
MyNewsgate: tutta l'USENET italiana online!
(betatester *ufficiale*)

 riga5
Non usare nl2br, utilizza explode per generare un array con un elemento
per ogni riga, poi usa for (od equivalente) per ciclare su tutti gli
elementi, usa substr per estrarre le prime 7 lettere della riga, usa if
per confrontarle con 'http://', poi fai il print di un tag "a" e br
oppure dell'elemento e di br.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 oppure dell'elemento e di br.
Uh interessantao! Non conoscevo explode, quindi l'ho cercata sul manuale 
PHP online (qui: 
http://it2.php.net/manual/it/function.explode.php
).
Ecco cosa ho ricavato dagli esempi:
$lines = array();
$lines = explode("\n", $row[campo_memo]);
$lineCount = count($lines);
for ($i = 0; $i < $lineCount; $i++){
  if (substr($lines[$i], 0, 7) = 'http://')
     echo "<a href='$lines[$i]'>link</a><br>";
  else
     echo $lines[$i]."<br>";
}//for
 
Ti ringrazio per il prezioso aiuto, spero che questo post torni utile 
anche ad altri in futuro :-)
Ciau,


 $lines = explode("\n", $row[campo_memo]);
Meglio:
$lines = explode("\r\n", $row['campo_memo']);
-- 
I am what I am, I do what I can


 $lines = explode("\r\n", $row['campo_memo']); 
Mi spieghi anche questa? Te l'ho detto che sono un neofita del php :-)
Ciau e grazie ancora,


 Mi spieghi anche questa? 
Che cosa non capisci?


 Che cosa non capisci?
Pensavo fosse sufficiente usare il line feed inveec tu mi indichi anche il 
carriage return; è solo per una maggiore precisione, giusto?
Ciau,


 anche il carriage return; è solo per una maggiore precisione, giusto?
Presumo che il tuo testo contenga \r\n come delimitatore di riga, se
fai l'explode usando solo \n ti ritroverai il \r in quasi ogni elemento
dell'array.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E


 dell'array.
Si ok io infatti nel campo TEXT ho un copia&incolla di un file di testo quindi 
sicuramente ho ambedue.
Grazie,


 variabile al tipo array e lo inizializza, giusto? 
Explode restituisce una valore di tipo array, l'operatore di
assegnazione copia questo valore all'interno della variabile.
-- 
I am what I am, I do what I can


 assegnazione copia questo valore all'interno della variabile.
Ottimo, grazie (anche) per questa spiegazione.
Ciau,


 
non testato..
echo preg_replace("/(\r\n|\n)(http:\/\/.*)/i", '$1<a href="$2">$2</a>',
$row['campo_memo']);
-- 
www.iuz-lab.info

 
gia' meglio..
echo preg_replace("/(^|\r\n|\n)(http:\/\/.*)/i", '$1<a href="$2">$2</a>',
