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

PHP如何提取字符串指定区域内容?含大括号相关提取需求

PHP 提取/移除字符串中大括号内容的解决方案

刚好最近处理过类似的字符串操作需求,给你整理了这三个场景的PHP实现方案,直接就能用:

1. 提取单个大括号内的内容

如果只需要提取字符串中第一个大括号包裹的内容,用preg_match配合非贪婪正则就能搞定:

$originalStr = "text1 {text2} text3";
// 正则匹配大括号内的内容,非贪婪模式避免匹配过多
preg_match('/\{(.*?)\}/', $originalStr, $matchResults);
// 提取到的内容存储在$matchResults[1]中
echo $matchResults[1]; // 输出:text2

这里的正则\{(.*?)\}解释:

  • \{和\}:转义后匹配实际的大括号(因为大括号在正则里是特殊字符)
  • (.*?):非贪婪匹配任意字符,确保只匹配到第一个闭合的大括号为止

2. 移除大括号及其中的内容

要把所有大括号和里面的内容都删掉,同时清理掉多余的空格,用preg_replace两步处理最稳妥:

$originalStr = "text1 {text2} text3";
// 第一步:移除所有大括号及内部内容
$tempStr = preg_replace('/\{.*?\}/', '', $originalStr);
// 第二步:把多个连续空格替换成单个空格,再去掉首尾空格
$finalStr = trim(preg_replace('/\s+/', ' ', $tempStr));
echo $finalStr; // 输出:text1 text3

如果不需要清理空格,直接用第一步的结果就行,不过处理空格后输出会更整洁。

3. 提取多个大括号内的内容

当字符串里有多个大括号时,用preg_match_all批量提取,再拼接成需要的格式:

$originalStr = "text1 {text2} text3 {text4}";
// 匹配所有大括号内的内容
preg_match_all('/\{(.*?)\}/', $originalStr, $matchResults);
// 所有提取到的内容在$matchResults[1]数组里
$extractedContents = $matchResults[1];
// 用“和”拼接成指定格式
echo implode(' 和 ', $extractedContents); // 输出:text2 和 text4

如果需要其他分隔符,把implode里的' 和 '换成你想要的就行,比如', '就能得到逗号分隔的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:51:19