Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2015
    Messaggi
    5

    Ricercare la prima parola in un testo

    Salve a tutti,
    non trovando una soluzione al mio problema nelle discussioni già aperte, ho deciso di aprire questa nuova discussione.

    Avrei la necessità di ricavare da un elenco salvato in una stringa la prima parola e salvarla in un array:
    Es.
    codice:
    $elenco="questo 55esempio, questa pro55 esempio, questi 55esempi";
    // operazioni di recerca 
    $risultato[0]="questo";
    $risultato[1]="questa";
    $risultato[2]="questi";
    Usare funzioni PHP semplici come:
    substr(); oppure explode(); insieme a preg_replace(); mi ha avvicinato al risultato finale ma ancora non ci sono riuscito

    Qualcuno può aiutarmi?
    Ultima modifica di peppe5; 23-10-2015 a 02:28

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Usare funzioni PHP semplici come:
    substr(); oppure explode(); insieme a preg_replace(); mi ha avvicinato al risultato finale ma ancora non ci sono riuscito
    Cosa hai provato?

  3. #3
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Qui puoi fare dei test e per una prima parola in una stringa dovrebbe bastare (\w+) come pattern.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2015
    Messaggi
    5
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    Cosa hai provato?
    Ho provato questo:

    codice:
    while($riga = mysql_fetch_array($result))
    {
        $testo= $riga['testo']; //salvo in variabile temporanea   
        $testo2= preg_replace('/[0-9]{0,}/', '\\2', $testo);//toglie i numeri
        
        $array_testo2= explode(',', $testo2);//salvo in array con la prima parola spazio altri caratteri...
        $var_testo2 = implode(",", $array_testo2);//rimetto in variabile con la virgola l'elenco "semi pulito"
    // e mo?????
    }
    sono risucito a fare una prima "pulizia" ma mi sono bloccato
    Ultima modifica di peppe5; 24-10-2015 a 00:21

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2015
    Messaggi
    5
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Qui puoi fare dei test e per una prima parola in una stringa dovrebbe bastare (\w+) come pattern.
    Non ho capito bene il funzionamento di quel sito, ho fatto delle prove ma mi da errore!

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Con il pezzo di codice che hai postato dovresti mettere un esempio.
    Stringa in input, quella in output e quella che vorresti ottenere. Altrimenti non si capisce quello che vuoi fare.
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2015
    Messaggi
    5
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Con il pezzo di codice che hai postato dovresti mettere un esempio.
    Stringa in input, quella in output e quella che vorresti ottenere. Altrimenti non si capisce quello che vuoi fare.
    Hai ragione scasuami, riscrivo un pezzo di codice cosi da poterci lavorare e fare delle prove.

    codice:
    $testo= "questo 55esempio, questa pro55 esempio, questi 55esempi"; //stringa in input   
    $testo2= preg_replace('/[0-9]{0,}/', '\\2', $testo);//toglie i numeri
    $array_testo2= explode(',', $testo2);//salvo in array con la prima parola spazio altri caratteri...
    $var_testo2 = implode(",", $array_testo2);//rimetto in variabile con la virgola l'elenco "semi pulito"
    
    print"Testo di partenza: $testo";
    print"Testo rielaborato: $var_testo2"; //l'output dovrebbe essere cosi:
    //Testo rielaborato: questo, questa, questi
    Come già detto prima il testo non sarà sempre questo poichè è il risultato di una query quindi occorre trovare delle funzioni php che in successione mi "puliscano" il testo dagli altri carattteri (numeri e lettere). Spero di essere stato più chiaro

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Questo dovrebbe aiutarti.

    Codice PHP:
    $testo"questo 55esempio, questa pro55 esempio, questi 55esempi.meglio tardi che mai"
    $testo",".$testo// aggiungo una , per avere una sequenza regolare.
    $pattern "/([,.]\s*\S+)/ui";
    preg_match_all($pattern,$testo,$res);
    print_r($res); 
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2015
    Messaggi
    5
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Questo dovrebbe aiutarti.

    Codice PHP:
    $testo"questo 55esempio, questa pro55 esempio, questi 55esempi.meglio tardi che mai"
    $testo",".$testo// aggiungo una , per avere una sequenza regolare.
    $pattern "/([,.]\s*\S+)/ui";
    preg_match_all($pattern,$testo,$res);
    print_r($res); 
    Magnifico! con questi aggiustamenti del testo funziona! il risultato però mi da un array di array:

    codice:
    Array (     [0] => Array         (             [0] => ,questo             [1] => , questa             [2] => , questi             [3] => .meglio         )      [1] => Array         (             [0] => ,questo             [1] => , questa             [2] => , questi             [3] => .meglio         )  )
    Se volessi salvarlo in una variabile sotto forma d'elenco?

Tag per questa discussione

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.