PHP parse_ini_file错误

时间:2012-06-14 10:59:19

标签: php parsing ini

我正在使用parse_ini_file来读取文件的内容,但它并不总是成功。

例如,此文件可以正常工作:

[playlist]
numberofentries=3
File1=http://scfire-dtc-aa05.stream.aol.com:80/stream/1010
Title1=(#1 - 168/11500) Absolutely Smooth Jazz - SKY.FM - the world's smoothest jazz 24 hours a day
Length1=-1
File2=http://scfire-ntc-aa06.stream.aol.com:80/stream/1010
Title2=(#2 - 171/11500) Absolutely Smooth Jazz - SKY.FM - the world's smoothest jazz 24 hours a day
Length1=-1
File3=http://scfire-mtc-aa04.stream.aol.com:80/stream/1010
Title3=(#3 - 175/11500) Absolutely Smooth Jazz - SKY.FM - the world's smoothest jazz 24 hours a day
Length1=-1
Version=2

但是,当我使用parse_ini_file读取以下文件时,我收到一条错误消息,指出它无法解析该文件:

[playlist]
numberofentries=3
File1=http://87.230.82.17:80
Title1=(#1 - 365/1400) DEFJAY.DE - 100% R&B! (GERMANY)
Length1=-1
File2=http://87.230.56.25:80
Title2=(#2 - 370/1400) DEFJAY.DE - 100% R&B! (GERMANY)
Length1=-1
File3=http://87.230.56.32:80
Title3=(#3 - 375/1400) DEFJAY.DE - 100% R&B! (GERMANY)
Length1=-1
Version=2

这是我读取文件的代码:

$file = "test.pls";
$ini_array = parse_ini_file($file, true);
$audiostream = $ini_array['playlist']['File1'];
echo "stream is: ".$audiostream;

我看不出文件之间的差异。任何人都知道出了什么问题?

由于

1 个答案:

答案 0 :(得分:4)

首先,您需要附上非字母数字字符

来自手册:

  

如果ini文件中的值包含任何非字母数字字符,则需要用双引号(“)括起来。

PHP.net - parse_ini_file

所以:

[playlist]
 numberofentries=3
 File1="http://87.230.82.17:80"
 Title1="(#1 - 365/1400) DEFJAY.DE - 100% R&B! (GERMANY)"
 Length1=-1
 File2="http://87.230.56.25:80"
 Title2="(#2 - 370/1400) DEFJAY.DE - 100% R&B! (GERMANY)"
 Length1=-1
 File3="http://87.230.56.32:80"
 Title3="(#3 - 375/1400) DEFJAY.DE - 100% R&B! (GERMANY)"
 Length1=-1
 Version=2 

另请注意,有保留字:

  

保留字不得用作ini文件的密钥。这些包括:null,yes,no,true,false,on,off,none。值为null,no和false导致“”,yes和true导致“1”。字符?{} |&〜![()^“不得在键中的任何位置使用,并且在值中具有特殊含义