Ciao a tutti. Come al solito al momento di utilizzare le espressioni regolari cado nel panico.
Volevo chiedervi come si fa, dato un testo lungo, a recuperare solo ad esempio le prime 5 parole, seguite dai 3 punti e infine dalle ultime 3 parole.
Ciao a tutti. Come al solito al momento di utilizzare le espressioni regolari cado nel panico.
Volevo chiedervi come si fa, dato un testo lungo, a recuperare solo ad esempio le prime 5 parole, seguite dai 3 punti e infine dalle ultime 3 parole.
Non sono molto pratica ma...
questo da i primi 20 caratteri poi i 3 punti e alla fine gli ultimi caratteri.
Non ho usato le exp reg, ma substr
prova questo e modificalo come ti viene meglio.codice:$corto= substr( $testolungo , 0, 20 ).'...'.substr( $testolungo, -10 );
A meno che non ti rispndano anche altri.
io sono novellina :P
Arianna Microchip
FreePlayClub
Ti ringrazio ma anche io avevo già pensato a questa soluzione.
Solo che così tronco le parole.
Io invece vorrei fare in modo di mantenere tot parole intere sia all'inizio che alla fine.
puoi fare uno split con lo spazio, che ti restituisce un array con le parole, poi con una count accedi ai primi tre e agli ultimi tre elementi e im mezzo ci metti i puntini...
![]()
Ok.Ora ci provo.Nel caso mi rifaccio vivo.Grazie.
Grazie al suggerimento di manuel.s sono arrivato a questo punto
Più o meno ho raggiunto il mio scopo però ho notato che ovviamente,ad esempio le due parole separate dall'apostrofo vengono considerate come una.Codice PHP:
<?php
$frase = "Ieri sono andato al cinema a vedere l'ultimo film di Quentin Tarantino";
echo $frase;
echo "
";
$separa = explode(" ",$frase);
//for ($i = 0; $i < count($separa); $i++)
for ($i = 0; $i < 3; $i++)
echo $separa[$i]." ";
echo "...";
for ($i = count($separa) - 3; $i < count($separa); $i++)
echo $separa[$i]." ";
?>
Credo che per ovviare a questo problema ci voglia per forza un'espressione regolare. Qualcuno è in grado di darmi una mano.
Ad esempio vorrei che se la frase finisse con l'ultimo film queste venissero considerate come 3 parole e non due.
Non c'è proprio nessuno in grado di dirmi l'espr.regolare?
Please.
:master:
Una cosa del genere dovrebbe andar bene, anche se ora non posso provarla
Codice PHP:
if (1 == preg_match('/^(([a-z]+){3}).*(([a-z]+){3})$/i', $testo, $matches)) {
echo 'Prime 3: '.$matches[1];
echo 'Ultime 3: '.$matches[2];
}
else {
// il testo ha meno di 6 parole
}