qual è l'espressione regolare per trovare le prime 40 parole in una ipotetica variabile $testo??
Io ho provato
ma nn funziona... suggerimenti?codice:$testo = ereg_replace("((.*?)(\s)){40}", "\\1...", $testo);
(anche senza regexp)?
qual è l'espressione regolare per trovare le prime 40 parole in una ipotetica variabile $testo??
Io ho provato
ma nn funziona... suggerimenti?codice:$testo = ereg_replace("((.*?)(\s)){40}", "\\1...", $testo);
(anche senza regexp)?
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
senza regexp
ma la domanda resta valida: come farlo con una regexp??codice:$testoarray = explode(' ', $testo); $testo = implode(' ', array_slice($testoarray, 0, 40)) . "...";
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Io avevo fatto così e mi sembra che funzioni abbastanza bene, l'unico problema è che considera i caratteri accentati come non parola, cosa che si potrebbe risolvere inserendoli nella classe dei caratteri consentiti così [a-zàèìòù].
Il modo migliore in realtà sarebbe di definire i caratteri di una parola attraverso la classe [\p{L}] ma preg non vuole accettarmi questa sintassi, nonostante abbia messo il modificatore u come dice il manuale:
u (PCRE_UTF8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.
Cmq quella nel post linkato funziona se non hai esigenze particolari (tipo caratteri accentati maiuscoli).
Ciao
([A-Za-z1-9]*?\s){1,40}
se vuoi altri caratteri basta inserirli nella quadra.![]()
Puoi fare cosi se vuoi contare non soltanto gli spazi ma anche le virgole, punto , etc...
codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled</title> </head> <body> <?php $testo = "Io avevo fatto così e mi sembra che funzioni abbastanza bene,"; $testo .= "l'unico problema è che considera i caratteri accentati come non parola,"; $testo .= "cosa che si potrebbe risolvere inserendoli nella classe dei caratteri"; $testo .= "consentiti così [a-zàèìòù]."; $testo .= "Il modo migliore in realtà sarebbe di definire i caratteri di una parola"; $testo .= " attraverso la classe [\p{L}] ma preg non vuole accettarmi questa sintassi,"; $testo .= "nonostante abbia messo il modificatore u come dice il manuale:"; $pattern = "/^(\w+\W*){1,15}/"; print "$testo "; preg_match($pattern,$testo,$regs); print_r($regs); ?> <hr> <? $testo = preg_replace($pattern,"\\0...",$testo); print $testo; ?> </body> </html>
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr