我有这个在很多文件的顶部:如何在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()将第一部分分块。 –