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,提问作者Вячеслав Предеин
相关产品推荐
相关产品推荐

