You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中preg_match匹配file_get_contents读取内容返回空数组如何解决

问题原因

PHP的PCRE正则引擎默认配置下,元字符.仅匹配除换行符\n之外的所有字符。你读取的多行文件内容中,两个#a#标记之间包含换行,.*?无法跨换行匹配内容,导致整个正则匹配失败,返回的结果数组为空。

解决方案

有两种常用的修复方式:

  • 方案1:给正则添加s模式修正符,该修饰符的作用就是让.可以匹配包括换行符在内的所有字符,修改后的完整代码如下:
<?php
$HTML = file_get_contents('file.php');
$REGEX = '/#a#(.*?)#a#/s'; // 正则末尾加s修饰符

preg_match($REGEX, $HTML, $MATCH);

print_r($MATCH);
var_dump($MATCH);
?>
  • 方案2:不依赖修饰符,将通配符.*?替换为[\s\S]*?,其中\s匹配所有空白字符(含换行、制表符等),\S匹配所有非空白字符,二者组合即可覆盖所有字符场景,修改后的正则如下:
$REGEX = '/#a#([\s\S]*?)#a#/';

内容的提问来源于stack exchange,提问作者ReflectYourCharacter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:15:03