我有這個在很多文件的頂部:如何在PHP中閱讀此方法?
--- title: This is a link type: link ---
什麼是讀取每個那些,扔變量的最佳方式?
我可以使用正則表達式捕獲該片段:/^(\-{3})(.*)(\-{3})/s
然後再次使用正則表達式來讀取每個變量。
有沒有更好的方法?有沒有辦法將該正則表達式限制爲只有三行,以防萬一我在文檔後面的某個位置有---
?
我有這個在很多文件的頂部:如何在PHP中閱讀此方法?
--- title: This is a link type: link ---
什麼是讀取每個那些,扔變量的最佳方式?
我可以使用正則表達式捕獲該片段:/^(\-{3})(.*)(\-{3})/s
然後再次使用正則表達式來讀取每個變量。
有沒有更好的方法?有沒有辦法將該正則表達式限制爲只有三行,以防萬一我在文檔後面的某個位置有---
?
應該這樣做:
<?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。
這工作:
$file = file("/file/path"); echo $title = array_pop(explode(": ",$file[1])); echo $type = array_pop(explode(": ",$file[2]));
最好的辦法是不使用/s
,並明確^
換行符$
主播工作。如果你只有這兩個變量,就像在你的榜樣,你的確可以用一個正則表達式做到這一點:
preg_match_all(
'/
^--- $ \s*
^(\w+) : (.*) $ \s*
^(\w+) : (.*) $
/mix',
$text, $result, PREG_SET_ORDER);
這會給你的變量名每個在[1]和[3]和相關聯的值在[2]和[4]中。
可能有一個稍微快一點的方法,但我們並沒有談論超過微秒的事情。它會做得很好。如果這些文件超大,那麼您可以使用strpos()將第一部分分塊。 –