2

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;

ファイルの違いはあまりわかりません。何が問題なのか知っている人はいますか?

ありがとう

4

1 に答える 1

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" になります。文字 ?{}|&~![()^" はキーのどこにも使用できず、値に特別な意味があります

于 2012-06-14T11:14:22.647 に答える