Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    2

    Espressione regolare che non convalida stringhe più lunghe di 255 caratteri

    Ho un problema con le espressioni regolari. Espongo...

    Caratteristiche script
    Linguaggio: PHP
    Versione HTML: 4.01 Transitional
    Set caratteri: UTF-8

    Finalità script: Convalida FORM

    Problema: espressione regolare che non accetta stringhe più lunghe di 255 caratteri . Troppo pochi per i campi TEXTAREA del mio form.


    L'espressione regolare è ^[a-zA-Z0-9 ...più altri caratteri]{1,255}$ si trova in una finzione ereg().

    Se alzo il limite massimo di caratteri per la classe (es. {1,500}) l'output della pagina restituisce Warning: ereg(): REG_BADBR in /usr/local/psa/.../.../functions.lib.php on line 340

    Se tolgo {1,255} il numero di caratteri permessi resta 255.


    Eppure all'indirizzo http://www.php.net/manual/it/referen...ern.syntax.php è scritto: "... una occorrenza specifica un numero minimo e massimo di riconoscimenti previsti tramite la specifica dei due limiti ... Entrambi i numeri devono essere minori di 65536 ed il primo deve essere minore o uguale rispetto al secondo ...".

    In che trappola sono finito?
    Avete indicazione su come sfondare questo muro dei 255 caratteri?

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    usa preg_match al posto di ereg.
    think simple think ringo

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Forse non ho capito il problema, ma perche non togliere il controllo se non vuoi che ci sia un limite ? Potresti usare strlen se tu dovessi farne uno.
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    2
    Grazie Marketto!
    Il problema è scomparso.

    Ho fatto un test...

    preg_match("/^[^<>;]+$/", $stringa_di_testo); // nessun'altro parametro aggiunto

    ...che impedisse l'inserimento di alcuni caratteri e già così funziona anche con testi lunghi.

    Come si può vedere ho modificato l'espressione regolare invertendo il ragionamento (non più cosa deve passare ma cosa non deve passare... che poi è più semplice).

    Per badaze:
    se ho messo il controllo (penso tu intenda l'espressione regolare) ci sono dei motivi che vanno al di la di htmlspecialchars() e simili.
    Per strlen ok ma visto che adesso uso preg_match il controllo lenght lo posso fare con questa funzione.

    Grazie anche ad html.it. Sin dagli albori di Internet è sempre stata un punto di riferimento coi fiocchi.

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.