Newsgroup: it.comp.www.php
Titolo: come prendere le prime righe di un'array

buongiorno,
ho un file con tutti i sommari degli articoli (news) del mio sito.
Il file sommario news e' cosi' composto:
<!--ARTICLE-->
<p><b><a href=article1.php>Titolo articolo 1</a></b>
<br>
<font size=1>Mar 18, 2003<br />
Author: TPG</font></p>
<p>Testo articolo 1</p>
<hr>
<!--ARTICLE-->
<p><b><a href=article2.php>Titolo articolo 2</a></b>
<br>
<font size=1>Mar 18, 2003<br />
Author: TPG</font></p>
<p>Testo articolo 2</p>
<hr>
<!--ARTICLE-->
<p><b><a href=article3.php>Titolo articolo 3</a></b>
<br> ecc.ecc. ec..
Con un po' di php e grazie alla riga: <!--ARTICLE-->  che divide gli
articoli vado a pubblicare soltanto gli ultimi 5 news.
$articles = explode("<!--ARTICLE-->", $old_news);
 $i=0;
 foreach ( $articles as $article )
 {
  if(count($articles)>$i)
  {
   if(5 >= $i++)
   {
    print $article;
   }
  }
 }
Ora vorrei creare una barra delle news dove pubblicare soltanto il titolo
della news con relativo link, in pratica la prima riga di ogni articolo, ma
non so come estrapolarlo dalla variabile $article.
Se non si fosse capito il mio problema e' che ho una variabile composto da
tot numero di righe e io voglio prenderne soltanto il primo. Come si fa?
Ho provato con il seguente codice ma mi da come risultato sempre 1.
$righe = count($article);
echo "<p>Il file contiene $righe righe.\n";
Dove sbaglio?
Ciao e Grazie.
KASH

La funzion count() conta gli elementi di un vettore e $article non lo e'.
Dovresti creare un vettore di appoggio nel ciclo e lavorare su quello
$vettore = explode ("\n", $article);
$vettore diventa quindi
    [0] =>
    [1] => <!--ARTICLE-->
    [2] => <p><b><a href=article1.php>Titolo articolo 1</a></b>
    [3] => <br>
    [4] => <font size=1>Mar 18, 2003<br />
    [5] => Author: TPG</font></p>
    [6] => <p>Testo articolo 1</p>
    [7] => <hr>
    [8] => <!--ARTICLE-->
    [9] => <p><b><a href=article2.php>Titolo articolo 2</a></b>
    [10] => <br>
    [11] => <font size=1>Mar 18, 2003<br />
    [12] => Author: TPG</font></p>
    [13] => <p>Testo articolo 2</p>
    [14] => <hr>
adesso che hai creato un vettore "spezzando" quando incontri il codice \n (a
capo)
allora potrai prendere le righe che ti servono, $vettore[0], $vettore[1],
$vettore[2]... $vettore[n]
ciao,
~omar


 $vettore = explode ("\n", $article);
[snip]


cosi' al volo penserei ad un funzione a hoc che lavorando con le rexep ti
pulisce/estrapola/taglia $vettore[3]
in modo da ottenere i due valori
ovviamente $vettore[3] deve avere una struttura costante (lettere
simboli...)
vedi se su 
http://www.php.net/manual/it/ref.strings.php
trovi qualcosa che serva a metter su una funzione di quel tipo
ciao,
~omar
ps: cmq IMHO hai organizzato in maniera scomoda la base dati all'inizio,
cioe' dovresti crearti un db con i dati fondamentali (link, autore, titolo)
in modo a personalizzare poi il tutto come preferisci


<p><b><a href=article_2003_03_18_140934.php>New Ph.D. students</a></b>
for ($n = 0, ...)
{
	...
	if (eregi('.*href=\([^<>]*\)>\([^<>]*</a>.*', $vettore[3], $gregs)
	{
		$n++;
		print <<< PARAM
<param name="text$n" value="$gregs[2]">
<param name="link$n" value="$gregs[1]">
PARAM;
	}
}
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 trovi qualcosa che serva a metter su una funzione di quel tipo
Grazie mille Omar, ho perso moltissime ore di sono ma mi sono fatto una
cultura su funzioni di php che prima ignoravo.
Ho parzialmente risolto.
Prendo l'articolo e lo esplodo nelle righe che lo compongono:
    $vettore = explode ("\n", $article);
Ho fatto in modo che la pagina da linkare abbia il nome di una lunghezza
fissa. Poi taglio via la prima parte che non mi interessa, poi suddivido la
stringa in modo da avere nel primo pezzo soltanto il nome della pagina da
linkare, elimino alla fine le i tag inutili e ho ottenuto il la pagina dal
linkare.
La riga in cui si trova il link all'interno del mio articolo e' la prima
($vettore[1]):
Il link lo prendo con questo:
    $string = $vettore[1];
    $string = ereg_replace ("<p><b><a href=", "", $string);
    $string = chunk_split("$string", 29, '<br>');
    $link = explode ("<br>", $string);
Per quanto riguarda invece il testo del link uso questa semplicissima riga
che mi elimina tutto l'html e tag che ci sono nel $vettore[1]:
   $testo_link = ereg_replace("<([^>]+)>", "", $vettore[1]);
Ma ho un problema.
Il testo del link cosi' ricavato ha un "a capo" che mi crea dei problemi.
Penso che sia dovuto al primo comando explode su $article.
In pratica il mio testo del link e' fatto cosi':
INIZIO TESTO: Nuovo studente fra di noi.
FINE TESTO
Invece di essere cosi:
INIZIO TESTO: Nuovo studente fra di noi. FINE TESTO
Non riesco a fare in modo che sia tutto su una riga sola.  Ho provato mille
combinazioni di explode ecc. ecc., ho letto mille manuali, ma non sono
riuscito a trovare l'inghippo.
Ideee???
Grazie mille.
CIAO KASH