2012-09-11 105 views
2

我想讀取文本文件作爲C++閱讀如何讀取和解析此文本文件的內容?

我這裏是從文本文件

(item(name 256) (desc 520)(Index 1)(Image "Wea001") (specialty (aspeed 700))) 
(item (name 257) (desc 520)   (Index 2) (Image "Wea002")(specialty(Attack 16 24))) 

我希望輸出像

name : 256 
Desc : 520 
Index : 1 
Image : Wea001 
Specialty > aspeed : 700 

Name : 257 
Desc : 520 
Index : 2 
Image : Wea002 
Speciality > Attack : 16 24 

這可能嗎?

我想:

preg_match_all('/name\s+(.*?)\)\+\(desc\s+(.*?)\)\+\(Index\s+(.*?)\)/', $text, $matches, PREG_SET_ORDER); 

foreach ($matches as $match) { 
    list (, $name, $desc, $index) = $match; 
    echo 'name : '.$name.' <br> Desc : '.$desc.'<br> Index : '.$index.''; 
    } 

但它並沒有給我正確的輸出,我想。

謝謝

+3

聖牛是一個討厭的格式。它來自哪裏?你可以改變它嗎? – DaveRandom

+0

Lisp攻擊!這麼多括號! – Tchoupi

回答

2
<?php 
    $txt = '(item(name 256) (desc 520)(Index 1)(Image "Wea001") (specialty (aspeed 700))(item (name 257) (desc 520)   (Index 2) (Image "Wea002")(specialty(Attack 16 24)))'; 

    preg_match_all('/name\s+(?P<name>\w+).*desc\s+(?P<desc>\d+).*Index\s+(?P<index>\d+).*Image\s+(?P<img>.*)\).*specialty\s*\((?P<speciality>.*)\)\)\)/', $txt, $matches); 
    foreach($matches['name'] AS $id => $name){ 
     echo 'name : '.$name.' <br> Desc : '.$matches['desc'][$id].'<br> Index : '.$matches['index'][$id].'<br> speciality : '.$matches['speciality'][$id].''; 
} 

假設你有總是相似的數據格式

+0

非常感謝,它工作正常 – DragoN