sto memorizzazione di traduzioni in mio file INI nel mio sistema e sono memorizzati in questo modo:analisi del file INI con PHP quando e virgola (;) è incluso nel valore
$ini=parse_ini_file('translations.ini',false,INI_SCANNER_RAW);
Questa impostazione INI_SCANNER_RAW dice PHP, secondo la documentazione, che:
Se INI_SCANNER_RAW viene indicato, i valori delle opzioni non sarà analizzato.
Tecnicamente questo significa che non dovrebbe fare alcuna analisi con i valori nel file INI, quindi non devo citare o sfuggire nulla nel file INI. Questi tutti i lavori:
example1="one"
example2=one
example1='one'
example3="double quotes ("value")"
example4=double quotes ("value")
example3='double quotes ("value")'
Avrebbero uscita come:
one
one
one
double quotes ("value")
double quotes ("value")
double quotes ("value")
Anche questo funziona:
semi-colon1="ˇ1234567890+´õü'äö-.,<>~:_ÖÄ*PÕÜ`?=)(/&%¤#"[email protected]£$€{[]}\½"
quali uscite prevedibile:
ˇ1234567890+´õü'äö-.,<>~:_ÖÄ*PÕÜ`?=)(/&%¤#"[email protected]£$€{[]}\½
Ma qui è un problema. Nel momento in cui molto ho aggiungere un punto e virgola (;) per il mio valore INI, le mie pause di analisi, anche se cerco di sfuggire.
example1="semi-colon looks like (;) character"
example1="semi-colon looks like (\;) character"
example1="semi-colon looks like (\\;) character"
example1="semi-colon looks like (\\\;) character"
Tutto l'output è:
"semi-colon looks like (
"semi-colon looks like (
"semi-colon looks like (
"semi-colon looks like (
(E lo stesso vale se uso le virgolette singole al posto delle virgolette)
La mia ipotesi migliore è che questo è dovuto al fatto semi -colon è considerato un personaggio per un commento, quindi viene rimosso e lascia questo snippet di testo. Le citazioni di partenza rimangono lì perché le virgolette che terminano sono dopo il punto e virgola, quindi non è incapsulando.
Ma questo ha poco senso in quanto # è anche considerato un simbolo di commento per i file INI.
Ma questo è un problema piuttosto grave per il mio sistema, come posso utilizzare un punto e virgola in una stringa del valore in un file INI? Si tratta di un bug in PHP o comportamento previsto?
Ciò non un'eccezione o una comunicazione o un errore neanche.
Grazie!
Cheers, a quanto pare è risolto nelle versioni di PHP più recenti (dal giugno/luglio 2012), ma sfortuna per tutte le vecchie versioni là fuori. Ho trovato il collegamento anche io ora, ma grazie, questa è la risposta corretta. (segnerà come corretto una volta che me lo consente). – kingmaple
FYI: E 'nel changelog, come fissato in PHP5.4.5 http://php.net/ChangeLog-5.php –
Grazie Mike B – kingmaple