Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [switch] "case" che viene ignorato. Chiarimenti.

    Buon pomeriggio a tutti raga,

    sto allenandomi con gli switch perchè vorrei passare dalla modalità if-> elseif -> elseif -> ecc alla modalità, appunto, switch ($var) { etc.. } dato che è più performante.

    Questo switch però mi salta il 3° case.

    Perchè??

    Codice PHP:
    switch ($var) {

      case (
    ''):
        echo 
    "campo vuoto";
        break;
      
      case (!
    preg_match('/(ciao)/'$var)):
        echo 
    "name: $var = errore";
        break;

      case (
    preg_match('/(ciao)/'$var)):
        echo 
    "name: $var = giusto";
        break;

      
    /* Il case che segue dovrebbe venire ignorato MA, se si scrive "ciao"..
       * in considerazione e viene stampato a video...invece che stampare a video
       * il case appena precedente... */

      
    case (!('')):
        echo 
    "name: $var = non vuoto.";
        break;

    Se scrivo "ciao" dovrebbe stamparmi a video il 3° case giusto? Ma perchè no?
    Perchè mi passa direttamente al 4° case?

    Grazie a tutti,
    Wart

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Rettifico subito.

    Ho cambiato il 3° case in questo modo:
    Codice PHP:
    case (preg_match('/^(ciao)$/'$var) == true):
      echo 
    "name: $var = giusto";
      break; 
    Quindi se si inserisce la stringa "ciao", non salterà più il case specificato.

    ...solo vorrei capire perchè prima saltava ed ora no.

    Mi piacerebbe ricevere chiarimenti da esperti

    Grazie

  3. #3
    Come dice la documentazione ufficiale:
    ^ Start of line
    $ End of line
    Ce l'ho fatta! - ItalianPixel -

  4. #4
    Per essere più esaustivi:

    Simple regex

    Regex quick reference
    [abc] A single character: a, b or c
    [^abc] Any single character but a, b, or c
    [a-z] Any single character in the range a-z
    [a-zA-Z] Any single character in the range a-z or A-Z
    ^ Start of line
    $ End of line
    \A Start of string
    \z End of string
    . Any single character
    \s Any whitespace character
    \S Any non-whitespace character
    \d Any digit
    \D Any non-digit
    \w Any word character (letter, number, underscore)
    \W Any non-word character
    \b Any word boundary character
    (...) Capture everything enclosed
    (a|b) a or b
    a? Zero or one of a
    a* Zero or more of a
    a+ One or more of a
    a{3} Exactly 3 of a
    a{3,} 3 or more of a
    a{3,6} Between 3 and 6 of a

    options: i case insensitive m make dot match newlines x ignore whitespace in regex o perform #{...} substitutions only once
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Grazie pipe. No era giusto per capire perchè con:

    - preg_match('/(ciao)/', $var);

    ..con scritto ciao , non mi risultava il 3° case e mi saltava direttamente all'ultimo.
    (Quando matchando esattamente la parola "ciao" sarebbe dovuto fermarsi al terzo..)

    (( ...credo...ad ogni modo...rivisitatina regEx necessitam .. ))


    Grazie ^^

  6. #6

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.