PDA

View Full Version : [PHP] Estrarre stringa ben delimitata


fedo
23-08-2006, 17:27
Ciao,

ho una stringa (annuncio pubblicitario) molto lunga (supponiamo 200 chars) e vorrei ricavarne solo la prima parte, ovvero la stringa che voglio estrarre non deve superare 100 chars e non deve finire tagliando la parola che si trova in posizione 100 (dico questo per far capire che la funzione substr() con valore 100 non può essere usata in maniera 'rozza')..

Non importa che la stringa estratta abbia 94, 97,etc... caratteri, basta che si concluda con una parola intera...

Cosa mi consigliate? io pensavo a ricavare i primi 90 caratteri e poi aggiungere altri caratteri finchè non arrivo ad uno spazio..
Si potrebbe fare con uno stupido ciclo, ma forse c'è una maniera + efficiente..

grazie

anonimizzato
23-08-2006, 19:28
Ecco un script.


// la stringa
$stringa = "la mamma va al mercato e compra dieci mele da portare a casa per fare una bella torta per suo figlio";

// esplodo la stringa in un array di parole
$parole = explode(" ",$stringa);

// ciclo l'array aggiungendo via via le parole prima scomposte
foreach($parole as $parola){
// controllo prima di aggiungere la parola successiva che la lunghezza tota le non ecceda quella voluta, il +1 rappresenta lo spazio dopo ogni carattere

$caratteri += strlen($parola) + 1;
if($caratteri <= 75){
echo $parola . " ";
}

}


?>


Sicuramente esiste di meglio ma l'ho fatto al volo quindi non rompere le balle. :D

;)

AngeL)
23-08-2006, 19:31
fai un for all'inverso da 100 il primo spazio che trovi ci fai substr :D

andbin
23-08-2006, 20:03
Ecco un'altra possibilità: sfruttare wordwrap():
$stringa = "......";

$output = wordwrap ($stringa, 100, "\n");
if (($idx = strpos ($output, "\n")) !== FALSE)
$output = substr ($output, 0, $idx);

fedo
23-08-2006, 23:45
la soluzione di andbin è molto pulita e funziona perfettamente..

anche le altre funzionano, ma sono + "macchinose"..

Grazie a tutti