我正在使用 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
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 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
Run Code Online (Sandbox Code Playgroud)
这是我读取文件的代码:
$file = "test.pls";
$ini_array = parse_ini_file($file, true);
$audiostream = $ini_array['playlist']['File1'];
echo "stream is: ".$audiostream;
Run Code Online (Sandbox Code Playgroud)
我看不出这些文件之间有太大区别。有人知道出了什么问题吗?
谢谢
首先,您需要将非字母数字字符括起来
来自手册:
如果 ini 文件中的值包含任何非字母数字字符,则需要将其括在双引号 (") 中。
所以:
[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
Run Code Online (Sandbox Code Playgroud)
另请注意,有保留字:
有些保留字不能用作 ini 文件的键。其中包括:空、是、否、真、假、开、关、无。值 null、no 和 false 会产生“”,yes 和 true 会产生“1”。字符 ?{}|&~![()^" 不得在键中的任何位置使用,并且在值中具有特殊含义