Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #19978 > unrolled thread

valore serializzato su unica riga (niente PHP_EOL)

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2015-10-09 16:48 +0200
Last post2015-10-10 15:03 +0000
Articles 7 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  valore serializzato su unica riga (niente PHP_EOL) alex <1j9448a02@lnx159sneakemail.com.invalid> - 2015-10-09 16:48 +0200
    Re: valore serializzato su unica riga (niente PHP_EOL) fmassei@gmail.com - 2015-10-09 07:59 -0700
    Re: valore serializzato su unica riga (niente PHP_EOL) Leonardo Serni <lserni@gmail.com> - 2015-10-09 18:45 +0200
      Re: valore serializzato su unica riga (niente PHP_EOL) alex <1j9448a02@lnx159sneakemail.com.invalid> - 2015-10-09 19:05 +0200
        Re: valore serializzato su unica riga (niente PHP_EOL) Leonardo Serni <lserni@gmail.com> - 2015-10-09 19:09 +0200
          Re: valore serializzato su unica riga (niente PHP_EOL) alex <1j9448a02@lnx159sneakemail.com.invalid> - 2015-10-09 22:30 +0200
        Re: valore serializzato su unica riga (niente PHP_EOL) Alessandro Pellizzari <shuriken@amiran.it> - 2015-10-10 15:03 +0000

#19978 — valore serializzato su unica riga (niente PHP_EOL)

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2015-10-09 16:48 +0200
Subjectvalore serializzato su unica riga (niente PHP_EOL)
Message-ID<mv8k40$a20$1@speranza.aioe.org>
$lines = array(
	serialize(new Test()),
	serialize('test'),
	serialize(112)
);

$linesString = implode(PHP_EOL, $lines);

file_put_contents(__DIR__.'/test.txt', $linesString);


Come potete vedere, ogni riga contiene un valore serializzato.
Come potete vedere, per unire le righe in un'unica stringa (che verrà 
salvata su file) ho usato PHP_EOL come separatore.

Ma come potete notare, affinchè non succedano pasticci (come avrete 
intuito), è *assolutamente obbligatorio* che ciascuna riga, o meglio, 
ciascun valore serializzato *non* contenga il PHP_EOL che ho usato per 
separare le righe.

Quindi siamo sicuri che la funzione serialize() non produca stringhe 
multi-line?
Non so se mi sono spiegato...

[toc] | [next] | [standalone]


#19979

Fromfmassei@gmail.com
Date2015-10-09 07:59 -0700
Message-ID<a33e91aa-adad-4a64-9734-db5dbf59e021@googlegroups.com>
In reply to#19978
On Friday, October 9, 2015 at 4:48:36 PM UTC+2, alex wrote:
> Quindi siamo sicuri che la funzione serialize() non produca stringhe 
> multi-line?
>

Non solo potrebbe contenere caratteri di fine linea, teoricamente serialize
ritorna uno stream di bytes, non una stringa di testo, quindi potrebbe pure
contenere caratteri non stampabili, null-byte incluso.

Ciao!

[toc] | [prev] | [next] | [standalone]


#19981

FromLeonardo Serni <lserni@gmail.com>
Date2015-10-09 18:45 +0200
Message-ID<4lrf1b52vrtlvbumns3knkpv2rmn1lv7qs@L.Serni>
In reply to#19978
On Fri, 9 Oct 2015 16:48:35 +0200, alex
<1j9448a02@lnx159sneakemail.com.invalid> wrote:

>$lines = array(
>	serialize(new Test()),
>	serialize('test'),
>	serialize(112)
>);

$oneLine = base64_encode(gzcompress(serialize($whatever)));

>Quindi siamo sicuri che la funzione serialize() non produca stringhe 
>multi-line?

No. Basta tu provi a serializzare un testo con tre righe, e...

gzcompress non è indispensabile, ma IMHO vale la pena.

Leonardo

-- 

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.

[toc] | [prev] | [next] | [standalone]


#19982

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2015-10-09 19:05 +0200
Message-ID<mv8s44$u35$1@speranza.aioe.org>
In reply to#19981
Il 09/10/2015 18:45, Leonardo Serni ha scritto:
> On Fri, 9 Oct 2015 16:48:35 +0200, alex
> <1j9448a02@lnx159sneakemail.com.invalid> wrote:
>
>> $lines = array(
>> 	serialize(new Test()),
>> 	serialize('test'),
>> 	serialize(112)
>> );
>
> $oneLine = base64_encode(gzcompress(serialize($whatever)));
>
>> Quindi siamo sicuri che la funzione serialize() non produca stringhe
>> multi-line?
>
> No. Basta tu provi a serializzare un testo con tre righe, e...
>

Oh cavolo l'avevo ignorato

> gzcompress non è indispensabile, ma IMHO vale la pena.

Quindi base64_encode(serialize($whatever)) dovrebbe bastare?

[toc] | [prev] | [next] | [standalone]


#19983

FromLeonardo Serni <lserni@gmail.com>
Date2015-10-09 19:09 +0200
Message-ID<c2tf1b98tpdb5ebepdgu2cm5a214funmdf@L.Serni>
In reply to#19982
On Fri, 9 Oct 2015 19:05:10 +0200, alex
<1j9448a02@lnx159sneakemail.com.invalid> wrote:

>> gzcompress non è indispensabile, ma IMHO vale la pena.

>Quindi base64_encode(serialize($whatever)) dovrebbe bastare?

Sì. Per stringhe brevi o contenenti dati compressi, addirittura ti conviene
pure.

Viene fuori una riga unica, roba tipo

	eNortjI0t1LySM3JyecKzy/KSdHj4tLS0lKyBgBdZAaV

che puoi riespandere con base64_decode (, gzuncompress) e unserialize.

Leonardo

-- 

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.

[toc] | [prev] | [next] | [standalone]


#19987

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2015-10-09 22:30 +0200
Message-ID<mv985p$psl$1@speranza.aioe.org>
In reply to#19983
Il 09/10/2015 19:09, Leonardo Serni ha scritto:
> On Fri, 9 Oct 2015 19:05:10 +0200, alex
> <1j9448a02@lnx159sneakemail.com.invalid> wrote:
>
>>> gzcompress non è indispensabile, ma IMHO vale la pena.
>
>> Quindi base64_encode(serialize($whatever)) dovrebbe bastare?
>
> Sì. Per stringhe brevi o contenenti dati compressi, addirittura ti conviene
> pure.
>
> Viene fuori una riga unica, roba tipo
>
> 	eNortjI0t1LySM3JyecKzy/KSdHj4tLS0lKyBgBdZAaV
>
> che puoi riespandere con base64_decode (, gzuncompress) e unserialize.
>
> Leonardo
>

grazie!!!

[toc] | [prev] | [next] | [standalone]


#19992

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2015-10-10 15:03 +0000
Message-ID<d7snmuFkn27U3@mid.individual.net>
In reply to#19982
Il Fri, 09 Oct 2015 19:05:10 +0200, alex ha scritto:

> Quindi base64_encode(serialize($whatever)) dovrebbe bastare?

Se non hai l'estrema esigenza di avere un file in puro ASCII, ma la vedo 
dura visto che stai usando serialize e non json_encode, ti conviene 
semplicemente salvare il serialize della struttura grezza:

$lines = array(
	new Test(),
	'test',
	112
);

file_put_contents(__DIR__.'/test.txt', serialize($linesString));

Tutto il resto (serialize dei pezzi, base64, ecc.) lo trovo abbastanza 
inutile, mentre un gzcompress ci può stare, ma dipende da quali 
prestazioni ti aspetti e dall'hardware che hai.

Bye.

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web