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

    Rivelare e sostituire nul "chr(000)"

    Ho realizzato uno script per importare dei dati da txt tabulato a mysql, il file txt e un eportazione di
    un db di filemaker (sotto os x) a volte nel file d'esportazione viene inserito il carattere nul chr(000)
    dovrei rivelare e sostituire il carattere, ma php non sembra riverarlo.
    Codice PHP:
    $file "test_nul.txt";
    $handle fopen($file'r+');
    $source_data fread($handlefilesize($file));
    fclose($handle);
    $separatore chr(011); // TAB
    $acc chr(015); // CR (accapo)
    str_replace (chr(000)," ",$source_data); // elimina nul
    echo  source_data
    Vedi:


    cichity74
    Immagini allegate Immagini allegate

  2. #2
    up

  3. #3
    up

  4. #4
    str_replace (chr(000)," ",$source_data);

    oltre al fatto che forse basterebbe chr(0) (un solo zero) non riassegni la variabile (svistona?)

    $source_data = str_replace (chr(000)," ",$source_data);


    cmq per i caratteri "particolari" io di solito uso preg


    $data = preg_replace("/\x00/", " ", $data);



    P.S. verifica anche che ci sia il null che di solito le funzioni su stringa si fermano proprio quando lo trovano

    ... if(preg_match("/\x00/", $source_data)) ... altrimenti devi usare una addcslashes per vedere cosa legge il php al posto del null
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Originariamente inviato da andr3a
    str_replace (chr(000)," ",$source_data);

    oltre al fatto che forse basterebbe chr(0) (un solo zero) non riassegni la variabile (svistona?)

    $source_data = str_replace (chr(000)," ",$source_data);


    cmq per i caratteri "particolari" io di solito uso preg


    $data = preg_replace("/\x00/", " ", $data);



    P.S. verifica anche che ci sia il null che di solito le funzioni su stringa si fermano proprio quando lo trovano

    ... if(preg_match("/\x00/", $source_data)) ... altrimenti devi usare una addcslashes per vedere cosa legge il php al posto del null
    Grande svistona !!!
    la cosa curiosa / paradossale è che ciò che mi ha indotto in errore è che altri replace funzionano...
    Codice PHP:
        // elimina occorrenze
            
    str_replace (chr(011).chr(011),chr(011),$source_data); // sostituisce doppio tab con tab
            
    str_replace (chr(011).chr(015),chr(015),$source_data); // .. 
    Per il discorso degli 0 chr funziona analogamente con 0 o con 00 o con 000
    grazie per il supporto
    cichity74

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.