Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    regexp per le prime 40 parole

    qual è l'espressione regolare per trovare le prime 40 parole in una ipotetica variabile $testo??

    Io ho provato

    codice:
    $testo = ereg_replace("((.*?)(\s)){40}", "\\1...", $testo);
    ma nn funziona... suggerimenti?
    (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)

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    senza regexp

    codice:
            $testoarray = explode(' ', $testo);
            $testo = implode(' ', array_slice($testoarray, 0, 40)) . "...";
    ma la domanda resta valida: come farlo con una regexp??
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    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

  4. #4
    ([A-Za-z1-9]*?\s){1,40}
    se vuoi altri caratteri basta inserirli nella quadra.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.