如何在PHP中阅读此内容?

时间:2011-11-20 06:23:12

标签: php regex

我把它放在很多文件的顶部:

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

阅读其中每一项并将其投入变量的最佳方法是什么?

我可以使用正则表达式捕获该段:/^(\-{3})(.*)(\-{3})/s然后再次使用regex将每个段读入变量。

有更好的方法吗?有没有办法将正则表达式限制为只有三行,以防我在文档的后面某处---

3 个答案:

答案 0 :(得分:1)

最好的方法是不使用/s并使用明确的^换行符$锚点。如果你只有这两个变量,比如在你的例子中,你确实可以用一个正则表达式来实现:

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

这将为您提供[1]和[3]中的变量名称以及[2]和[4]中的相关值。

答案 1 :(得分: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行。

答案 2 :(得分:0)

这有效:

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