2011-11-20 73 views
1

我有這個在很多文件的頂部:如何在PHP中閱讀此方法?

--- 
title: This is a link 
type: link 
--- 

什麼是讀取每個那些,扔變量的最佳方式?

我可以使用正則表達式捕獲該片段:/^(\-{3})(.*)(\-{3})/s然後再次使用正則表達式來讀取每個變量。

有沒有更好的方法?有沒有辦法將該正則表達式限制爲只有三行,以防萬一我在文檔後面的某個位置有---

+0

可能有一個稍微快一點的方法,但我們並沒有談論超過微秒的事情。它會做得很好。如果這些文件超大,那麼您可以使用strpos()將第一部分分塊。 –

回答

0

應該這樣做:

<?php 

$file = file("/path/to/the/file"); 

$titleLine = explode(": ",$file[1]); 
$typeLine = explode(": ",$file[2]); 

$title = $titleLine[1]; 
$type = $typeLine[1]; 

echo "$title: $type"; 

?> 

它從文件中讀取僅行2和3。

+0

如果我正確讀取文檔,則會將文檔的全部內容讀入數組,並且如果文件很大,可能不是最佳選擇。見http://php.net/manual/en/function.file.php – hafichuk

+0

我修改了這一點,以適應我的需要,但沒關係。謝謝! – switz

0

這工作:

 
$file = file("/file/path"); 
echo $title = array_pop(explode(": ",$file[1])); 
echo $type = array_pop(explode(": ",$file[2])); 
1

最好的辦法是不使用/s,並明確^換行符$主播工作。如果你只有這兩個變量,就像在你的榜樣,你的確可以用一個正則表達式做到這一點:

preg_match_all(
     '/ 
     ^---   $ \s* 
     ^(\w+) : (.*) $ \s* 
     ^(\w+) : (.*) $ 
     /mix', 
     $text, $result, PREG_SET_ORDER); 

這會給你的變量名每個在[1]和[3]和相關聯的值在[2]和[4]中。