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

PHP中如何用正则表达式提取多行字符串中的指定片段?

解决PHP正则提取多行字符串内容无结果的问题

你的正则没生效主要有两个原因:

  • 默认情况下,正则里的.不会匹配换行符,而目标内容和response:不在同一行,导致匹配失败
  • 正则的结束边界写得不对,原正则)};和实际字符串结构不匹配,目标内容结尾是}],后面才是};

修改后的代码如下:

$input = '<script>
buffy = 1;
vampire = {
response: [{"sleep":"night"}]
};
</script>';

// 加上s修饰符让.匹配换行,同时调整结束匹配的边界
preg_match( '~response:\s*(.*?)\s*};~s', $input, $output );

print_r( $output );

正则说明

  • s:开启单行模式,让.匹配包括换行在内的所有字符
  • \s*:匹配任意数量的空白字符(包括空格、换行),兼容代码里的换行和缩进
  • (.*?):非贪婪匹配任意字符,直到遇到后面的};,精准捕获目标内容

执行后$output[1]就是你想要提取的[{"sleep":"night"}]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:47:26