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

PHP中如何用正则表达式查找JSON字符串及提取指定子串

PHP正则表达式相关问题解答

问题1:如何在PHP中使用正则表达式在JSON字符串中查找指定字符串?

在PHP里,你可以用preg_match()或preg_match_all()函数结合正则表达式实现,具体操作如下:

  • 先确认JSON字符串格式合法(可选:用json_decode()验证,避免无效JSON干扰匹配)
  • 针对要查找的字符串编写正则,注意用preg_quote()转义特殊字符,防止正则语法冲突
  • 调用正则函数执行匹配

示例代码:

<?php
$jsonStr = '{"name":"Alice","age":25,"email":"alice@example.com"}';
$target = "Alice";

// 匹配包含目标字符串的片段
if (preg_match('/"' . preg_quote($target, '/') . '/', $jsonStr, $matches)) {
    echo "找到匹配内容:" . $matches[0];
}
?>

如果要精准匹配某个JSON字段的值,比如提取name字段的内容,可用更针对性的正则:

preg_match('/"name":"([^"]+)"/', $jsonStr, $matches);
// $matches[1] 即为name字段的取值

问题2:如何从指定字符串中提取子串{"result":1}?

给定字符串:

$str = 'Res TP/1.1 101 Switching Protocols
Upgrade: websocket
Sec-WebSocket-Version: 13
Connection: Upgrade
Sec-WebSocket-Accept: dlnHlWqQ4h57DuALMOjKJmxbNn8=
Server: workerman/4.1.9

rec{"result":1}len14';

可以通过正则匹配JSON格式片段实现提取,示例代码:

<?php
if (preg_match('/\{[^}]+\}/', $str, $matches)) {
    echo "提取到的子串:" . $matches[0];
}
?>

这个正则/\{[^}]+\}/的逻辑是:匹配以{开头、}结尾,中间包含任意非}字符的内容,刚好能精准提取出{"result":1}。

如果要更严格匹配包含result的JSON对象,可调整正则为:

preg_match('/{"result":[0-9]+}/', $str, $matches);

内容的提问来源于stack exchange,提问作者Вячеслав Предеин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:52:31