Line breaks in strings inside ini files result in an error when using INI_SCANNER_RAW with parse_ini_file or parse_ini_string
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
I don't think there should be a difference in the parsing of string literals in INI files between INI_SCANNER_RAW and other scanner modes. "abcd" is parsed the same, it should be as consistant with "ab\ncd".
The following code:
<?php
$ini = <<<EOF
a=42
b="line 1
line 2"
EOF;
var_dump(parse_ini_string($ini, false, INI_SCANNER_NORMAL));
var_dump(parse_ini_string($ini, false, INI_SCANNER_TYPED));
var_dump(parse_ini_string($ini, false, INI_SCANNER_RAW));
Resulted in this output:
array(2) {
["a"]=>
string(2) "42"
["b"]=>
string(13) "line 1
line 2"
}
array(2) {
["a"]=>
int(42)
["b"]=>
string(13) "line 1
line 2"
}
Warning: syntax error, unexpected '"' in Unknown on line 3
in /in/RTv1g on line 11
bool(false)
But I expected this output instead:
array(2) {
["a"]=>
string(2) "42"
["b"]=>
string(13) "line 1
line 2"
}
array(2) {
["a"]=>
int(42)
["b"]=>
string(13) "line 1
line 2"
}
array(2) {
["a"]=>
string(2) "42"
["b"]=>
string(13) "line 1
line 2"
}
Demo: https://3v4l.org/RTv1g/rfc#vgit.master
PHP Version
all, including master
Operating System
No response
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Verhalten mit dem bereitgestellten PHP-Heredoc und vergleiche parse_ini_string mit INI_SCANNER_NORMAL, INI_SCANNER_TYPED und INI_SCANNER_RAW; verfolge anschließend die Einstiegspunkte des INI-Parsers für parse_ini_file und parse_ini_string. Als erledigt gilt die Aufgabe, wenn mehrzeilige Zeichenketten in Anführungszeichen in RAW mit demselben Wert wie in den anderen Scanner-Modi akzeptiert werden und eine Regressionstestabdeckung für das Beispiel vorhanden ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100