Php 用于获取特定组的正则表达式

Php 用于获取特定组的正则表达式,php,regex,Php,Regex,我需要一个正则表达式语法来获取用“%”字符分隔的字符串中的特定组。我以以下字符串为例: %David davidson%你好,我也能储存1000个号码%Another Chain%你好!?% 我想将这些匹配项存储在不同的PHP变量中,如下所示 $var1 = david davidson; $var2 = Hello I can store numbers; 。。。等 但我不知道如何获取特定的字符组(每个示例获取第二个不以符号或%符号开头的匹配) 我尝试使用此代码%.*?(),但它只返回第一个

我需要一个正则表达式语法来获取用“%”字符分隔的字符串中的特定组。我以以下字符串为例:

%David davidson%你好,我也能储存1000个号码%Another Chain%你好!?%

我想将这些匹配项存储在不同的PHP变量中,如下所示

$var1 = david davidson;
$var2 = Hello I can store numbers;
。。。等

但我不知道如何获取特定的字符组(每个示例获取第二个不以符号或%符号开头的匹配)

我尝试使用此代码
%.*?()
,但它只返回第一个和第三个匹配项,但实际上我想选择特定的组

我在谷歌上搜索了它,但在这里我没有找到一个与我需要的有点相符的答案,可能是因为我不知道我需要搜索哪些关键字才能得到一个好答案

preg_match_all('/[^%]+/sim', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
print_r($result);
这将为您提供:

  • 大卫戴维森
  • 你好,我也能储存1000个号码
  • 另一条链
  • 你好

    [^%]+


这意味着在正则表达式中,除了“%”之外的每个字符

如果分隔符总是
%
,则可以使用
$vars=explode(“%”,$string)
Carlos用他的回答打败了我。似乎一个
preg_split
变体在这里可能更有意义。为什么不干脆
str_replace(“%”,“$string”)?preg_match_all更好,因为他希望将组作为一个数组。但是preg_split也是useusable@user1477388他想得到字符串的某些部分,而不是一个更改值。他可以使用explode(“%”,$array);但这将给出两个空键(开始-结束%)。哇!!布伦德贴的东西很有魅力!非常感谢这一次!我花了两个多小时思考如何得到它