Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    regex unicode utf-8 - consentire segno + (plus sign)

    Ciao a tutti,

    ho una pagina codificata in utf-8 con una textarea dove l'utente dovrebbe scrive una descrizione e premendo un tasto la salva nel db,
    vorrei che venissero accettate le più comuni lettere, simboli, punteggiatura ecc.. e fin qui tutto ok, ma arrivando a testare il simbolo "+" mi blocco, il salvataggio si conclude ma il db mi rimpiazza il "+" con uno spazio " ".

    Utilizzo Postgresql 9.1, il problema non sembra essere nella regex (credo), poichè non mi fallisce il preg_match e mi salva tutto nel db, solo che alla rilettura dei dati noto la sostituzione del + con lo spazio " ", la stessa cosa mi succede con il simbolo "&" (tagliando tutta la stringa rimanente, da & in poi).

    posto lo stesso la regex per completezza:
    codice:
    "/^[0-9\p{L}\p{P}\p{S}\s]{1,512}+$/u";
    prima di salvare la stringa nel db eseguo l'apposito escape per postgresql:
    codice:
    pg_escape_string($descrizione)
    Non riesco a capire (e a trovare nella documentazione) cosa causi questi comportamenti.

    Qualcuno sa aiutarmi?

    Grazie.
    Perpetual Ribellion With Absolutely No Cause

  2. #2
    nessuno ha qualche idea?
    Perpetual Ribellion With Absolutely No Cause

  3. #3
    forse ho capito male quello che ti occorre.. ma non basta mettere un escape davanti il + ?
    non ho capito se il + è un carattere che vuoi consentire o se lo stai usando appunto come carattere speciale della regex.

  4. #4
    il carattere + è un carattere che voglio far consentire, e rientra nella punteggiatura "\p{P}", il preg_match non fallisce quando gli passo una stringa con un + in mezzo, il problema sembra essere dopo quando il db mi sostituisce il carattere + con uno spazio vuoto " ", stessa cosa per il carattere &
    Perpetual Ribellion With Absolutely No Cause

  5. #5
    Anche se questa discussione è di alcuni giorni fa riporto la soluzione per completezza.

    Il mio errore è stato quello di non aver eseguito l'encode URI delle stringhe.

    Utilizzando la funzione encodeURIComponent() sono riuscito a far passare i simbili & + senza problemi.

    Spero che in futuro possa essere di aiuto a chi ha avuto il mio stesso problema.

    Saluti.
    Perpetual Ribellion With Absolutely No Cause

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.