Visualizzazione dei risultati da 1 a 7 su 7

Discussione: stringa in un array

  1. #1

    stringa in un array

    salve,
    ho bisogno di ripulire una stringa da tag html e eventuali caratteri speciali ed inserire parola per parola all'interno di un array eliminando quelle con lunghezza inferiore a 3 caratteri.
    Mi spiego meglio con un esempio:

    $stringa = "<p>ciao a tutti</p> <br> l'anno scorso sono stato a Madrid. Il giorno preciso è 10/10/2014. Sono andato con andrea-giuseppe-gianni-marco.";


    il risultato deve essere un array che contiene le parole:
    ciao
    tutti
    anno
    scorso
    sono
    stato
    madrid
    giorno
    preciso
    2014
    sono
    andato
    con
    andrea
    Giuseppe
    gianni
    marco

    Con la funzione strip_tags() dovrei ripulire la stringa dai tag html.
    Non so adesso come sostituire i caratteri speciali magari con uno spazio.
    dopo dovrei fare un explode() in un array dividendo la stringa per ogni spazio che trovo.

    Non so.... potete darmi qualche suggerimento???

    grazie.

  2. #2
    per la sostituzione dei caratteri ho letto questa funzione:
    codice:
    preg_replace("/\W/", "", $stringa) 
    adesso devo capire come inserire il risultato in un array ignorando le parole che abbiano meno di 3 caratteri.

    Suggerimenti?
    Ultima modifica di DUMAX; 02-10-2015 a 12:11

  3. #3
    Dunque, ci sono vari passaggi...

    Per prima cosa rimuovi tutti i tag HTML con strip_tags() come hai giustamente detto.
    A questo punto hai una stringa "pulita".

    Il prossimo passo è rimuovere i caratteri speciali: per farlo devi creare un array che contenga tutti i caratteri speciali che vuoi rimuovere e poi passarlo alla funzione str_replace:

    codice:
    // Provides: Hll Wrld f PHP
    $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
    $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
    Qui maggiori info: http://php.net/manual/en/function.str-replace.php

    A questo punto hai la stringa pulita.

    Ora dividi la stringa in singole parole usando explode().

    Con un ciclo foreach, conta il numero di caratteri di ogni singola stringa/parola e se adatta, la aggiungi all'array definitivo che poi andrai ad usare:

    codice:
    $return = [];
    
    foreach ($exploded as $word)
    {
        if (strlen($word) > 3)
            $return[] = $word;
    }
    
    var_dump($return);
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #4
    Quote Originariamente inviata da DUMAX Visualizza il messaggio
    per la sostituzione dei caratteri ho letto questa funzione:
    codice:
    preg_replace("/\W/", "", $stringa) 
    adesso devo capire come inserire il risultato in un array ignorando le parole che abbiano meno di 3 caratteri.

    Suggerimenti?
    Codice PHP:
    preg_match_all('/\w{3,}/'$stringa$matches);

    print_r($matches[0]); 

  5. #5
    ho risolto!! grazie a tutti per l'aiuto

  6. #6
    Posta la soluzione...
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  7. #7
    Certo, scusate.
    Questo è il metodo che ho utilizzato:
    codice:
    function cleanString($string){ 
      $string = str_replace("à", "a", $string); 
      $string = str_replace("á", "a", $string); 
      $string = str_replace("â", "a", $string); 
      $string = str_replace("ä", "a", $string); 
      
      $string = str_replace("è", "e", $string); 
      $string = str_replace("é", "e", $string); 
      $string = str_replace("ê", "e", $string); 
      $string = str_replace("ë", "e", $string); 
      
      $string = str_replace("ì", "i", $string); 
      $string = str_replace("í", "i", $string); 
      $string = str_replace("î", "i", $string); 
      $string = str_replace("ï", "i", $string); 
      
      $string = str_replace("ò", "o", $string); 
      $string = str_replace("ó", "o", $string); 
      $string = str_replace("ô", "o", $string); 
      $string = str_replace("ö", "o", $string); 
      
      $string = str_replace("ù", "u", $string); 
      $string = str_replace("ú", "u", $string); 
      $string = str_replace("û", "u", $string); 
      $string = str_replace("ü", "u", $string); 
      
      $string = ereg_replace("[^A-Za-z0-9 ]", " ", $string ); 
      return $string; 
     }
    
    
    
    function String_in_Array($stringa){
     $stringa_pulita = preg_replace("/\W/", " ", cleanString(strip_tags($stringa))); //PULISCO LA STRINGA DAI TAGS HTML E SOSTITUISCO I CARATTERI SIMBOLO CON UNO SPAZIO
     $stringa_pulita = strtolower($stringa_pulita); //RENDO TUTTI I CARATTERI MINUSCOLI
     $array = explode(' ', $stringa_pulita); //INSERISCO LA STRINGA IN UN ARRAY
     $array_senza_doppioni = array_unique($array); //RIMUOVO DALL'ARRAI I VALORI DOPPI
     return $array_senza_doppioni;
     }
    Ultima modifica di DUMAX; 06-10-2015 a 09:50

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 © 2024 vBulletin Solutions, Inc. All rights reserved.