php / php/php-src

Line breaks in strings inside ini files result in an error when using INI_SCANNER_RAW with parse_ini_file or parse_ini_string

Ouverte
#11,709 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Status: Needs Triage
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le comportement avec le heredoc PHP fourni et comparez parse_ini_string en utilisant INI_SCANNER_NORMAL, INI_SCANNER_TYPED et INI_SCANNER_RAW ; puis retracez les points d’entrée de l’analyseur INI pour parse_ini_file et parse_ini_string. C’est terminé lorsque les chaînes entre guillemets multilignes sont acceptées dans RAW avec la même valeur que dans les autres modes de l’analyseur, avec une couverture de régression pour l’exemple.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c, php
Domaine
backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.