Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以使用自定义模式拆分文件内容?_Php_Regex_Parsing_File Get Contents - Fatal编程技术网

Php 是否可以使用自定义模式拆分文件内容?

Php 是否可以使用自定义模式拆分文件内容?,php,regex,parsing,file-get-contents,Php,Regex,Parsing,File Get Contents,是否可以将文件内容拆分为具有特定模式的部分 这就是我想要实现的目标: 使用文件获取内容读取文件 类似注释区域之间的只读内容 我不确定这有多复杂,但基本上如果我正在解析一个大型html文件,只想向浏览器显示特定的小部件(模式是注释边界),如下所示: $file = file_get_contents('http://example.com/'); $widgets = explode('<!-- widget -->', $file); 样本: <html> <

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

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

  • 使用文件获取内容读取文件
  • 类似注释区域之间的只读内容
我不确定这有多复杂,但基本上如果我正在解析一个大型html文件,只想向浏览器显示特定的小部件(模式是注释边界),如下所示:

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

<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和正则表达式或任何东西来解析边界之间的内容


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

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

$file = file_get_contents('http://example.com/');
$widgets = explode('<!-- widget -->', $file);
$file=file\u获取内容('http://example.com/');
$widgets=explode(“”,$file);

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

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

$text = file_get_contents('/path/to/your/file');
$array = split('<!-- widget -->', $text);
$text=file\u获取内容('/path/to/your/file');
$array=split(“”,$text);
第一个条目将是第一次出现
之前的所有内容,最后一个元素将是最后一个
之后的所有内容。每一个奇数元素都是你要寻找的

$pattern=“/([\s\s]+)/”;
$match=preg\u match\u all($pattern,$string,$match\u array);
变量转储($match\u数组);

非常非常好。快速提问..explode和split之间有什么实际区别吗?不完全一样,split()支持正则表达式,而explode不支持。老实说,如果您不打算使用正则表达式,您可能应该使用explode(),因为它可能更快(与php核心加载与正则表达式相关的内容以进行拆分而不是explode有关)。好的,谢谢您的解释。。是的,我会尽量避免使用正则表达式,因为它可以使用explode,不需要将事情复杂化。