Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [PHP]: splittare un campo text in pezzi da 255 caratteri (per Excel)

    Salve,
    ho un problemino:

    ho la necessita di esportare una tabella mysql in formato Excel e ho notato che l'esportazione fallisce, anzi la lettura del file esportato fallisce perchè Excel non supporta una lunghezza superiore a 255 caratteri.

    La mia tabella contiene dei campi TEXT che conterranno anche un migliaio di battute,
    quindi x risolvere stavo pensando di spezzare il campo TEXT in vari varchar.
    Qualcuno conosce una funzioncina php che fa qualcosa del genere tipo str_split()?

    Oppure avete altre idee per risolvere il problema?
    Mi sto scervellando da un giorno intero per trovare una soluzione...
    わさび

  2. #2
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Re: [PHP]: splittare un campo text in pezzi da 255 caratteri (per Excel)

    Dimenticavo... str_split() è per php5 e io ho il 4.
    C'è qualcosa di simile?
    わさび

  3. #3
    scritto al volo senza testarlo:

    Codice PHP:
    $exit false;
    $array_temp = array();
    do {
        if (
    strlen($campo_memo)>255) {
            
    $array_temp[] = substr($campo_memo0255);
            
    $campo_memo substr($campo_memo255);
        }
        else {
            
    $array_temp[] = $campo_memo;
            
    $exit true;
        }
    } while (!
    $exit); 
    $campo_memo contiene il testo lungo estratto dalla tabella; alla fine del ciclo l'array $array_temp dovrebbe contenere la lista di blocchi di testo da 255 caratteri.

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    grazie 1000 OhMyGod
    vado a testare
    わさび

  5. #5
    alternativa

    codice:
    if(!function_exists('str_split')) {
    	// Andrea Giammarchi [http://www.devpro.it/php4_id_118.html] 2006/05/23
    	function str_split($str, $len = 1) {
    		$result = array();
    		preg_replace("/([^\a]{1,{$len}})/e", 'array_push($result, "\\1");', $str);
    		return $result;
    	}
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    http://pear.php.net/package/PHP_Compat/download

    da qui puoi scaricare diverse funzioni di php 5 e integrarle in php 4, compresa str_split.

  7. #7
    Originariamente inviato da nicola75ss
    http://pear.php.net/package/PHP_Compat/download

    da qui puoi scaricare diverse funzioni di php 5 e integrarle in php 4, compresa str_split.
    già, le avevo viste e sono ben fatte ... per la sola str_split però forse questa è la migliore ( c'ho pensato dopo )
    codice:
    // simple way to use str_split php5 function with php4 too
    if(!function_exists('str_split')) {
    	// Andrea Giammarchi [www.devpro.it] 2006/05/23
    	function str_split($str, $len = 1) {
    		return preg_split("/([^\a]{{$len}})/", $str, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
    	}
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da andr3a
    già, le avevo viste e sono ben fatte ... per la sola str_split però forse questa è la migliore
    vista la qualità del codice che sforni ti credo sulla fiducia non avendo le competenze per fare un confronto.

  9. #9
    Originariamente inviato da nicola75ss
    vista la qualità del codice che sforni ti credo sulla fiducia non avendo le competenze per fare un confronto.
    il confronto è sulla compatibilità, rispetto la versione PEAR che garantisce compatibilità con PHP < 4 ... ma dubito esistano host con queste vecchie ed obsolete versioni.

    PEAR sfrutta preg_match_all, senza impostare flags, ma questa genera un array multidimensione che per questa sola cosa non serve (spreco di memoria) poichè con 2 flags si riesce ad avere lo stesso risultato restituendo esattamente solo i dati che ti interessano.

    C'è da dire però, che loro hanno implementato anche una versione per stringhe superiori a tot numero caratteri, che sfruttra un parsing posizione per posizione ed esegue ceil(Nstringa/Nlength) substr per ogni posizione ... secondo loro è più veloce per stringhe di dimensioni consistenti mentre io dubito possa esserci tutta questa differenza, visto che la preg ha un pattern semplice e le due flags non duplicano o aumentano i risultati come preg_match_all.

    Non saprei, l'unica cosa certa è che se non ti servono tutte le funzioni messe a disposizione da quel package ma solo questa, inutile muovere 3 classi più files PEAR, una riga ed hai fatto
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.