2

是否可以将文件的内容拆分为具有特定模式的部分?

这就是我想要实现的目标:

  • 使用 file_get_contents 读取文件
  • 只读类似评论区域之间的内容。

我不确定这有多复杂,但基本上如果我正在解析一个大的 html 文件并且只想向浏览器显示特定的小部件(模式是注释边界),如下所示:

样本:

<html>
<head>
   <title>test</title>
</head>
<body>
 this content should not be parsed.. ignored
 <!-- widget -->
 this is the widget. i want to parse this content only from the file
 <!-- widget -->
</body>
</html>

是否可以使用 php 和 regex 或任何东西来解析边界之间的内容?

我很抱歉,但我试图尽可能多地解释我想要实现的目标。希望有人帮助我。

4

3 回答 3

6

这当然是可能的,但实际上并不需要使用正则表达式来完成。我可能会做这样的事情:

$file = file_get_contents('http://example.com/');
$widgets = explode('<!-- widget -->', $file);

$widget现在(等)的奇数元素[1], [3], [5]包含这些边界之间的内容。

于 2009-04-22T19:28:22.077 回答
1

您可以使用正则表达式实现您想要的(或者如果您只是拆分,您可能只使用它)。检查文档。使用explode() 的另一个答案可能也会起作用。

$text = file_get_contents('/path/to/your/file');
$array = split('<!-- widget -->', $text);

第一个条目将是第一次出现之前的所有内容<!-- widget -->,最后一个元素将是最后一个之后的所有内容<!-- widget -->。每个奇数元素都是您要寻找的。

php拆分函数文档

于 2009-04-22T19:32:39.397 回答
1
$pattern = "/<!-- widget -->([\s\S]+)<!-- widget -->/";
$match = preg_match_all($pattern,$string,$match_array);

var_dump($match_array);
于 2009-04-22T19:39:17.010 回答