• User Attivo

    Un semplice ciclo di controllo

    Ho fatto un form normale con un campo (chiave) e i tasti reset e submit.
    La pagina php alla quale vengono indirizzati i dati inseriti ha uno script il cui inizio è il seguente:

    if&#40;$_POST&#91;chiave&#93;==""&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    "&#41;; exit&#40;&#41;;&#125; 
    
    if&#40;$_POST&#91;chiave&#93;==" "&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT 1"&#41;; exit&#40;&#41;;&#125;
    
    if&#40;$_POST&#91;chiave&#93;=="  "&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT 2"&#41;; exit&#40;&#41;;&#125;
    
    if&#40;$_POST&#91;chiave&#93;=="   "&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT 3"&#41;; exit&#40;&#41;;&#125;
    
    if&#40;$_POST&#91;chiave&#93;=="    "&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT 4"&#41;; exit&#40;&#41;;&#125;
    
    if&#40;$_POST&#91;chiave&#93;=="     "&#41; &#123; print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT 5"&#41;; exit&#40;&#41;;&#125;
    

    In pratica qualora il visitatore dovesse inserire uno spazio il controllo riportato sopra da il risultato EXIT 1
    Se inserisce 2 spazi EXIT 2 e così via fino a 5 spazi.
    Questo va bene funziona ma lo trovo banale e limitato.
    Ho provato a fare qualcosa con il FOR { }.
    E anche qualcos'altro usando la funzione strlen().
    Ma non sono riuscito. Mi suggerite qualcosa?


  • User Attivo

    puoi provare con

    preg_match_all

    che conta le occorenze di una stringa data una espressione regolare

    
    $n=preg_match_all&#40;"/&#91; &#93;/",$_POST&#91;chiave&#93;,$finto&#41;;
    if&#40;$n>0&#41;&#123;
    print&#40;"<font size=2>
    
    Nessun valore associato
    EXIT $n"&#41;; exit&#40;&#41;;
    &#125;
    

    occhio che non conta gli spazi adiacenti, ma TUTTI gli spazi nella stringa

    ciao


  • Super User

    Scritto al volo e non testato:

    
    if &#40;!trim &#40;$_POST&#91;'chiave'&#93;&#41;&#41; &#123;
      echo "<font size=2>
    
    Nessun valore associato
    ";
      if &#40;$n = strlen &#40;$_POST&#91;'chiave'&#93;&#41; &#123;
        echo "EXIT $n";
      &#125;
      exit &#40;&#41;;
    &#125;
    
    

    Occhio a chiudere il tag font (anzi, meglio non usarlo per niente e preferire i CSS).


  • User Attivo

    non sono sicuro che funziona, ma teoricamente così può andare 😄

    
    $num_spazi = strlen&#40;$_POST&#91;chiave&#93;&#41;;
    echo '<font size="2">
    
    Nessun valore associato
    EXIT' . $num_spazi;
    exit&#40;&#41;;
    

    p.s. ci vorrebbe il tag [php] sul forum :arrabbiato:


  • User Attivo

    così sti stampa la lunghezza della stringa non il numero di spazi

    la soluzione di low sembra la migliore


  • User Attivo

    @riky78 said:

    così sti stampa la lunghezza della stringa non il numero di spazi

    la soluzione di low sembra la migliore

    Infatti così va veramente bene però nel codice è stata omessa una parentesi tonda...

    Comunque tutto perfetto THK 😉

    :ciauz: