[Soci SLIP] spezzare una stringa con intelligenza (PHP)

Davide Corio davide.corio a domsense.com
Dom 20 Gen 2008 11:27:06 CET


Il giorno dom, 20/01/2008 alle 00.17 +0100, Roberto -MadBob- Guido ha
scritto:
> Mi permetto di riproporne una versione un poco piu' ottimizzata in
> termine di prestazione, avendo una complessita' computazionale ridotta.

ottimo :)

Per ridurre ancora il carico, possiamo usare split($stringa," ") per
tagliare la frase dove ci sono gli spazi, e ottenere una array di
parola.
Poi ciclando con foreach sull'array, possiamo comporre un nuovo array,
fino a quando la somma dei caratteri delle parola, ottenuta con strlen()
è minore o uguale a 30.
Così si va sempre in difetto, ma il calcolo è proprio minimo.

> Mi fa comunque strano che non esista gia' una funzione (o comunque una
> sequenza di funzioni) PHP di trattamento stringhe che non risolvano il
> problema in un modo quantomeno piu' elegante... 

Ah certo che c'è :)
wordwrap() :)

Ma davo per scontato che Andrea dovesse fare un esercizio ai suoi allievi :)
eheh :)

wordwrap() spezza le stringa ogni tot caratteri e aggiunge un nuovo carattere.
Solitamente usato per spezzare le stringhe e aggiungere <br/>.
Ovviamente, se spezziamo la stringa a 10 e dopo facciamo uno split per <br/>.
Il primo elemento dell'array è quello che ci serve :)

##################################################
<?php
$stringa = "ciao a tutti quanti";
$stringa_tagliata = wordwrap($stringa,10,"<br/>");
$lista = split("<br/>",$stringa_tagliata);
echo $lista[0];
?>
##################################################


Ma il codice creato in lista è più fine, in quanto va a capire se è
meglio andare avanti o indietro nella lista :)

Ai fini didattici (se questo era lo scopo) è decisamente meglio

-- 
Davide Corio
email: davide.corio<at>domsense.com
web: http://www.domsense.com




Maggiori informazioni sulla lista Soci