Line breaks in strings inside ini files result in an error when using INI_SCANNER_RAW with parse_ini_file or parse_ini_string
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C
- Star
- 40.4k
- Fork
- 8.1k
- Merge trung bình
- 2 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 96
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện hành vi bằng PHP heredoc được cung cấp và so sánh parse_ini_string khi sử dụng INI_SCANNER_NORMAL, INI_SCANNER_TYPED và INI_SCANNER_RAW; sau đó truy vết các điểm vào của trình phân tích cú pháp INI cho parse_ini_file và parse_ini_string. Được xem là hoàn tất khi các chuỗi có dấu ngoặc kép nhiều dòng được chấp nhận trong RAW với cùng giá trị như ở các chế độ scanner khác, kèm theo kiểm thử hồi quy cho ví dụ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- c, php
- Lĩnh vực
- backend
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100