Visualizzazione risultati 1 fino 4 di 4

Discussione: Script php per controllare la presenza di caratteri speciali

  1. #1
    Guest

    Predefinito Script php per controllare la presenza di caratteri speciali

    Buon 1° Maggio a tutti quanti, ho appena creato una funzione php che controlla la presenza di caratteri speciali in una stringa. La funzione controlla i caratteri ascii dal 33 al 47. Quello che vorrei fare io e inserire i caratteri uno ad uno. Ecco lo script:
    Codice PHP:
    <?php
    /**
    * Controlla se in una stringa sono presenti determinati caratteri speciali
    * @param string $stringa
    * @return boolean
    */
    function checkCaratteri($stringa){

    // array con l'ascii dei caratteri speciali
    $cs = array();

    // inserisco i codici ascii da 33 a 47
    //Invece vorrei inserire i caratteri ascii uno ad uno e non come fa php che preleva i caratteri dal 33 al 47 ho provato a scrivere $i=33;$=34;$=132 ma naturalmente mi da errore di sintassi.
    for($i=33;$i<=47;$i++){
    $cs[] = $i;
    }

    // variabile per stabilire se i caratteri speciali sono presenti
    $presenti = false;

    // ciclo la stringa
    for($i=0; $i<strlen($stringa);$i++){

    // ascii del carattere nella posizione $i
    $ascii = ord($stringa[$i]);

    // controllo se ascii si trova nell'array con i caratteri speciali
    if(in_array($ascii, $cs)){
    $presenti = true;
    // se è presente un solo carattere è inutile continuare il ciclo quidi esco
    break;
    }
    }

    // ritorno se sono presenti oppure non
    return $presenti;

    }

    // controllo
    if(checkCaratteri('#!stringaditest!#')){
    echo
    'presenti';
    }
    else{
    echo
    'non presenti';
    }

    // così stamperà 'presenti'
    ?>

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Io farei una cosa simile:

    Codice PHP:
    function checkCaratteri($stringa)
    {
    $cs = array(chr(37), chr(33), 'a'); //caratteri speciali da rilevare

    return str_replace($cs, '', $stringa) != $stringa; //se ha sostituito qualcosa, è diversa dalla originaria e torno true
    }

    echo
    checkCaratteri("test")?'presenti':'non presenti';
    Se comunque vuoi usare il tuo script, perché non mettere i numeri a mano? Perché un ciclo?
    Codice PHP:
    $cs = array(33, 34, 36, 40);
    Ciao!
    Ultima modifica di alemoppo : 01-05-2015 alle ore 20.56.42

  3. #3
    Guest

    Predefinito

    Grazie mille

  4. #4
    Guest

    Predefinito

    Ciao, non ne comprendo però l'utilità, nel senso che a me interessa inibirne l'uso ad esempio ma poco o nulla sapere se ci sono.
    Ad ogni conto per gioco ed esercizio si possono usare anche le funzioni ctype
    Codice PHP:
    $stringa = '0123 485#@abcdzZk';
    if (
    ctype_alfanum($stringa)) {
    echo
    'Ci sono solo caratteri alfanumerici.';
    } else {
    echo
    'Attenzione! Nella stringa ci sono anche caratteri non alfanumerici';
    }
    Ovviamente non ti dice quali ma per un controllo veloce va bene.
    Ma ad esempio puoi usare ctype_alfa() per conoscere se ci sono solo i caratteri tra a..z e A..Z
    Oppure ... vedi tu http://php.net/manual/en/ref.ctype.php :D

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •