Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Consiflio su funzione

  1. #1

    Consiflio su funzione

    Buongiorno
    Questo codice (funzione) dovrebbe far passare solo parole con solo caratteri alfabetici e solo uno spazio o un undescore, ma non in testa o coda

    le parole possoni essere una e non più di due
    Che ne pensate? vedete qualche altro caso che può "bucare" la function?
    codice:
    <?php
    function verifica_nome($nome){
                   //corregge nome per spazi o undescore duplicati
                   $corr=preg_replace('/\s\s+/',' ',$nome);
                   $corr=preg_replace('/\_\_+/','_',$corr);
                   $corr=preg_replace('/ _/','_',$corr);
                   $corr=preg_replace('/_ /','_',$corr);
                   $corr=preg_replace('/\&nbsp;/',' ',$corr);
                   //elimina eventuali spazi in testa o coda
                   $corr=trim($corr);
                   //elimina undescore in testa o coda
                   if(strpos($corr,'_')===0){$corr=substr($corr, 1);}
                   $l=strlen($corr)-1;
                   if(strpos($corr,'_')===$l){$corr=substr($corr, 0,$l);}
                   //verifica nome
                   $errore="";
                   $num_parole=str_word_count($corr,0,'aèéìòù0123456789');
                   if($num_parole<1 || $num_parole>2){ $errore.=" troppe parole ";}
                   if(strlen($corr)<4 || strlen($corr)>50){$errore.=" troppo lungo o corto ";}else{
                   if(!preg_match('/^[a-z _aèéìòù]{4,50}$/i',$corr)){$errore.=" caratteri non ammessi ";}}
                   if($errore==""){
                                  return "$nome => $corr <b>OK</b><br>";
                   }else{
                                  return "$nome => $corr <b>KO</b>$errore<br>";
                   }
    }
    /* *****fine function***** */
    /* esempi nomi da provare */
    $str[]="pinco_pallò";
    $str[]="sempronio__pallo";
    $str[]="asdrubale   pallo";
    $str[]="sofonisba _pallo";
    $str[]="attenzio_ Pallo";
    $str[]="onofrio _ trepalle";
    $str[]="Pallino";
    $str[]="Pallino C";
    $str[]="C Pallino";
    $str[]="pallonzi_pallo sopra";
    $str[]="pal";
    $str[]="Alcamir_";
    $str[]="_abrakadabra";
    $str[]="_abrak7adabra";
    $str[]="_nocciolina_";
    $str[]=" Noce Moscata ";
    $str[]="    Eri      ";
    $str[]="&nbsp;&nbsp;Ori&nbsp;&nbsp;";
    $str[]="_____oro_____";
    $str[]="Venanzio_C";
    $str[]="V_Onofrio";
    $str[]="vanesi*o";
    $str[]="_H_zozzone_";
    /* test */
    foreach($str as $nome){
                   echo verifica_nome($nome);
    }
    ?>
    Grazie
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  2. #2
    Errore di battitura nel titolo! Non è consiffio ma consiglio non ho potuto più correggere
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    Codice molto discutibile...

    Utilizzare un espressione regolare che con una riga risolve il problema?

    /^[A-Za-z]+(\s|-){1}[A-Za-z]+$/
    Ultima modifica di zacca94; 10-10-2017 a 18:30

  4. #4
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Codice molto discutibile...

    Utilizzare un espressione regolare che con una riga risolve il problema?

    /^[A-Za-z]+(\s|-){1}[A-Za-z]+$/
    Grazie della risposta!
    Utilizzare quella riga e cosa consiglieresti di togliere?
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

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.