2015-07-22 21 views
5

Tôi có một file .ini có chứa dấu ngoặc () Như php.net khuyên tôi parse.ini nộp với parse_ini_file() functio, vì vậy chúng ta hãy nói mã của tôi trông giống như:tập tin ini Parse với dấu ngoặc

$ini = parse_ini_file('files/models.ini'); 

sau đó lỗi trông giống như:

Warning: syntax error, unexpected '(' in files/models.ini on line 4 in \index.php on line 48 

Đây là văn bản từ dòng 4

00name1=100 08/82-11/90 (443/445) Typový sešit [V] [27] 

Vấn đề là tôi nhận được tập tin này từ bên ngoài và tôi không thể thay đổi nó,

Từ nhiều trang web tôi nhận thấy rằng một số từ có ý nghĩa đặc biệt trong tệp ini như "null" "true" "no" "yes" không phải loại tình huống này.

Vì vậy, ai đó có thể ai đó tư vấn cho tôi những gì tôi đang làm sai hoặc nếu điều này là không thể có cách giải quyết nào khác không?

+0

Giải pháp đơn giản nhất sẽ là bạn đặt dấu ngoặc kép quanh giá trị của bạn trong file ini của bạn – Rizier123

+0

Yea Tôi hiểu, nhưng tiếc là tôi không thể làm điều đó :( – Andurit

+0

Liệu tệp ini của bạn có bất kỳ nhận xét nào trong đó hoặc [mục]? – Rizier123

Trả lời

5

Bạn có thể sử dụng tùy chọn INI_SCANNER_RAW:

$ini = parse_ini_file('files/models.ini', false, INI_SCANNER_RAW); 

Từ documentation:

Nếu INI_SCANNER_RAW được cung cấp, sau đó giá trị tùy chọn sẽ không được phân tích.

Kết quả từ thử nghiệm của tôi:

$ php test.php 
array(1) { 
    ["foo"]=> 
    string(9) "foo (bar)" 
    ["00name1"]=> 
    string(49) "100 08/82-11/90 (443/445) Typový sešit [V] [27]" 
} 
+0

cảm ơn bạn, điều này sẽ giúp ích rất nhiều! – Andurit

Các vấn đề liên quan