A-AA+then

parse_ini_file : Error parsing xxx.ini on line 5

1,440
ผมต้องการอ่านค่าใน INI File แต่มัน Error ตอลดเลยคับสังเกตได้ว่ามัน error บรรทัดที่มีวงเล็บตลอดเลยคับ มีวิธีที่จะไม่ให้มัน Error
ได้หรือไม่คับ เพราะไฟล์นี้ถูกสร้างมาด้วยอีกโปรแกรมหนึ่ง และผมต้องการที่จะ ให้ PHP แสดง Version ของโปรแกรมนั้น ผ่าน PHP
อยากให้ข้อคงามที่ได้ออกมาเป็น

1000 (20081024)

ไม่ทราบว่าจะทำได้หรือเปล่าคับ ขอบคุณคับ

--------------------------------------
INI File

[SELFDEFENSE640]
platform=x64
versionid=1000
type=selfdefense64
version=1000 (20081024)
group=perseus
date=24.10.2008
file=nod7C31.nup
buildregname=Selfdefense64Build
build=1015
level=0
base=268435456
size=28673
category=engine

------------------------------------
Code

<?php
$arr=parse_ini_file("xxx.ini",true);
echo $arr['SELFDEFENSE640']['version'];
?>


-----------------------------------
แสดงผล

Warning: Error parsing xxx.ini on line 5

4 ความคิดเห็น

ข้อกำหนดของ ini ก็คือ ต้องไม่มีช่องว่าง ภายใน key และ value ครับ

ถ้าจำเป็นต้องมีช่องว่าง ให้ใส่ข้อความไว้ภายใน "..." ครับ
1

ขอบคุณคับ

2

ผมใช้ได้แล้วคับผมใช้ Function นี้คับ
--------------------------------------------
<?php
function parseIniFile($iIniFile)
    {
    $aResult  =
    $aMatches = array();
 
    $a = &$aResult;
    $s = '\s*([[:alnum:]_\- \*]+?)\s*';
 
    preg_match_all('#^\s*((\['.$s.'\])|(("?)'.$s.'\\5\s*=\s*("?)(.*?)\\7))\s*(;[^\n]*?)?$#ms', @file_get_contents($iIniFile), $aMatches, PREG_SET_ORDER);
 
    foreach ($aMatches as $aMatch)
      {
      if (empty($aMatch[2]))
              $a [$aMatch[6]] = $aMatch[8];
        else  $a = &$aResult [$aMatch[3]];
      }
 
    return $aResult;
    }

$arr=parseIniFile("xxx.ini);
echo $arr['SELFDEFENSE640']['version'];

?>


------------------------------------------------
แสดงผล

1000 (20081024)

-----------------------------------------------
Credit
PHP - Jean-Jacques Guegan
http://mach13.com/loose-and-multiline-parse_ini_file-function-in-php
 

3

เนื่อง parse_ini_file เป็นฟังก์ชั่นตามมาตรฐานของ windows ดังนั้นมันก็คงต้องทำให้ถูกกฏละครับ แต่ถ้าเราต้องการอะไรที่แหกกฏ ก็ต้องใช้ฟังก์ชั่นที่เขียนขึ้นเองละครับ

แนะนำให้นำบทความนี้ไปเขียนไว้บนบล๊อกครับ จะได้เผื่อเพื่อนสมาชิกท่านอื่นด้วย
4
^