Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 32
  1. #11
    Originariamente inviato da chris
    su php-dev non ci sta mica solo lerdorf :E
    e sono convinto che il mantainer principale della classe pear o quello del modulo pecl sapranno dirti se il loro lavoro è buggato :E
    magari mi dicono di no ma siccome mi sono letto tutte le specifiche rfc nonchè spulciato i sorgenti di tutti gli altri porting posso assicurare che la conversione Pear o Pecl non segue queste specifiche e fa operazioni "strane" sopra il range 0xF1 probabilmente al fine di normalizzare il tutto.

    Comunque al solito me la son fatta da solo l classe JSON e mi sembra sia 2 volte più rapida di quella Pear nonchè più rispettosa delle specifiche, almeno nel primo range di caratteri.

    Non appena la approvano ve la segnalo

    così poi mi dite se è buggata
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #12
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da andr3a
    Comunque al solito me la son fatta da solo l classe JSON e mi sembra sia 2 volte più rapida di quella Pear nonchè più rispettosa delle specifiche, almeno nel primo range di caratteri.
    guarda, ci avrei giocato tutte le mie cellule
    comunque segnala i bug se li hai trovati ed esistono

  3. #13
    mi passeresti il link a php-dev ?
    se è questo leggo off-line http://phpdev.net/ :master:
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #14
    credo sia sufficiente una cosa del genere, per adeguare la json_encode del PHP a quella del JS:
    Codice PHP:
    $json preg_replace('/([\\x{0001}-\\x{001f}])/ue'"'\\u'.sprintf('%04x', ord('$1'))"json_encode($data)); 
    Ditemi se ci vedete errori.

    Edit: la json_decode() non sembra funzionare con quel tipo di stringa, ottimo

  5. #15
    Originariamente inviato da skidx
    Edit: la json_decode() non sembra funzionare con quel tipo di stringa, ottimo
    dimmi tu a cosa servono queste conversioni se non rispettano quelle del JS ...

    in pratica hanno messo un modulo JSONF ... JavaScript Object Notation ... Forse
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #16
    comunque per la decode forse ho sbagliato io nelle prove, ero di fretta.
    Ora non sono a casa, se puoi prova tu: crei una stringa json con i primi 100 caratteri da javascript, poi te la copincolli nello script php e vedi un po' se funge.

    Se funziona, credo basti quella preg_replace in "uscita" ed è male di poco...

    poi comunque il problema si sarebbe verificato in casi rarissimi, visto che non sono usati quasi mai quei caratteri ( i vari NL, CR e TAB li codifica bene, mi sembra abbia problemi solo con quelli non stampabili).

  7. #17
    il problema non sono solo quei caratteri ... sono le specifiche che non vengono rispettate.

    Tali specifiche non prevedono che tutto da x00 a x1f sia convertito in \u00XX ... io ho già risolto con una mia classe perchè sia la pear che la dll danno problemi anche con stringhe errate o non appartenenti ad array o oggetti.

    Insomma, ora non mi interessa testare le libs ... nel senso che vorrei prima trovare il tempo di documentarmi in merito, mi sembra assurdo questo risultato
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #18
    Originariamente inviato da andr3a
    Tali specifiche non prevedono che tutto da x00 a x1f sia convertito in \u00XX ...
    Con l'espressione regolare che ho postato più su l'output generato è identico a quello generato da javascript.

    Ho ritestato il json_decode, funziona con quell'input, quindi "il bug" volendo si risolve facilmente in quel modo.

  9. #19
    non hai capito ... le specifiche non prevedono al conversione di tutti i caratteri da x00 a xf1 in quel modo ed inoltre ci sono altri caratteri ancora che andrebbero convertiti ma NON come \u00XX ... non a caso c'è la variabile
    var m = {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '"' : '\\"',
    '\\': '\\\\'
    };

    ed alcuni di questi non stanno nel range 00 - f1

    inolte le specifiche prevedono la conversione anche dello slash / (deve diventare \/) e di un altro carattere che non ricordo.

    Se leggi le specifiche li c'è scritto tutto, sia di questi che dell'altro carattere comunque il "bug" lo toglierei dalle virgolette perchè se un convertitore di un formato con specifiche non segue queste ultime significa che è stato scritto un pò alla "lasciame perde" ... come si dice dalle mie parti.



    [edit]
    trovi tutti i valori json da convertire in \u00XX o carattere slashato nella tabella di questo mio post: http://webreflection.blogspot.com/20...omparison.html
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #20
    Originariamente inviato da andr3a
    non hai capito ... le specifiche non prevedono al conversione di tutti i caratteri da x00 a xf1 in quel modo
    Prova l'espressione regorale che ho scritto prima sui primi 127 caratteri.
    Come vedrai dall'output, i caratteri speciali di cui parli restano "intatti" in uscita, e esattamente identici all'output generato da Javascript. I vari \n, \r etc. etc. restano così come sono.
    Codice PHP:
    $str '';
    for(
    $a 1$a 127$a++)
        
    $str .= utf8_encode(chr($a));

    $str = array($str);
    $json preg_replace('/([\\x{0001}-\\x{001f}])/ue'"'\\u'.sprintf('%04x', ord('$1'))"json_encode($str));
    echo 
    $json
    inolte le specifiche prevedono la conversione anche dello slash / (deve diventare \/) e di un altro carattere che non ricordo.
    Idem, viene convertito correttamente, come da specifiche.

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.