Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    2

    come si converte una stringa in un array?

    Scrivere uno script PHP che ricevuta una stringa in input tramite un modulo produca in output:
    il numero di consonanti e vocali che contiene
    il numero di caratteri uguali ad "a"
    il numero di caratteri di tipo numerico
    la frequenza con cui ogni carattere appare nella stringa
    questo è il testo del mio esercizio ,

    se scorro con un for il la stringa e poi la stampo a video esce solo la 1° lettera


    <?php

    $nome=$_POST['nome'];
    $vocali=0;
    $consonanti=0;
    $lettera=0;
    $cnt=count($nome);

    for($i=0;$i<$cnt;$i++)
    {
    echo $nome[$i],"
    ";
    }


    ?>

    come devo fare

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    per la lunghezza della stringa usa strlen.
    per le occorrenze dei singoli caratteri cerca sul manuale count_chars.

    poi ti crei gli array relativi alle vocali, alle consonanti e ai numeri.
    scorri la stringa, con in_array vedi se il singolo elemento della stringa è incluso nei vari array e in caso affermativo incrementi il relativo contatore.

    Buon lavoro.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    11
    ciao usa la funzione

    str_split()

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    str_split è solo per php 5.
    Al limite può usare preg_split per la conversione in array.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    11
    si lo so ma se sta usando php5 è piu comoda str_split()

  6. #6
    Originariamente inviato da nicola75ss
    str_split è solo per php 5.
    Al limite può usare preg_split per la conversione in array.
    beh implementazioni di str_split in PHP per PHP4 già scritte se ne trovano sulla documentazione http://it2.php.net/str_split

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Just for fun.... senza nessun ciclo....

    codice:
    <?php 
    
    function frequenzaCar(&$item,$key,$lenTesto) {
     $pc = ($item / $lenTesto) * 100 ;
     print "Carattere $key appare $item ".($item == 1 ? "volta" : "volte")." sia il ".sprintf("%01.2f",$pc)." %
    \n";
    } 
    
    //------- Array delle consonanti, vocali e cifre
    // Questo equivale a str_split di PHP 5
    $array_cons = preg_split('//', "BCDFGHJKLMNPQRSTVWXZ", -1, PREG_SPLIT_NO_EMPTY);
    $array_voca = preg_split('//', "AEIOUY", -1, PREG_SPLIT_NO_EMPTY);
    $array_cifr = preg_split('//', "0123456789", -1, PREG_SPLIT_NO_EMPTY);
    
    //------- Testo da analizzare
    $mioTesto   = "salve a tutti sono contento di cantare alla Scala alle 19 e 300 martedi 28";
    //------- Metto il testo un maiuscole
    $mioTestoU  = strtoupper($mioTesto);
    //------- Questo equivale a str_split di PHP 5
    $arrLettere = preg_split('//', $mioTestoU, -1, PREG_SPLIT_NO_EMPTY);
    //------- Ricavo le Consonanti usate nel testo 
    $res_cons   = array_intersect ( $arrLettere , $array_cons);
    //------- Ricavo le Vocali usate nel testo 
    $res_voca   = array_intersect ( $arrLettere , $array_voca);
    //------- Ricavo le Cifre usate nel testo 
    $res_cifr   = array_intersect ( $arrLettere , $array_cifr);
    
    //------- Risultato : N° di consonanti, vocali e cifre
    print "<hr>Il testo \"$mioTesto\" contiene :
    \n";
    $num_cons   = count($res_cons);
    $num_voca   = count($res_voca);
    $num_cifr   = count($res_cifr);
    print "$num_cons consonanti, $num_voca vocali e $num_cifr cifre per un totale di ".count($arrLettere)." caratteri.
    \n";
    
    //------- Frequenza dei caratteri - conto il numero di ogni valore per le consonanti, le vocali e le cifre
    $conta_cons = array_count_values ($res_cons);
    $conta_voca = array_count_values ($res_voca);
    $conta_cifr = array_count_values ($res_cifr);
    
    //------- Ordinamento alfabetico
    ksort($conta_cons);
    ksort($conta_voca);
    ksort($conta_cifr);
    
    //------- Frequenza della A (maiuscola)
    print "<hr>Ci sono ".$conta_voca["A"]." A nel testo.
    \n";
    
    //------- Frequenza di tutti i caratteri
    print "<hr>Frequenza dei caratteri :
    \n";
    print "* Consonanti :
    \n";
    array_walk($conta_cons,'frequenzaCar',count($arrLettere));
    print "* Vocali     :
    \n";
    array_walk($conta_voca,'frequenzaCar',count($arrLettere));
    print "* Cifre      :
    \n";
    array_walk($conta_cifr,'frequenzaCar',count($arrLettere));
     ?>
    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.