我需要帮助提取在特定字符串内找到的大括号之间的所有子字符串。
我在 javascript 中找到了一些解决方案,但我需要 PHP 的解决方案。
$string = "www.example.com/?foo={foo}&test={test}";
$subStrings = HELPME($string);
print_r($subStrings);
结果应该是:
array( [0] => foo, [1] => test )
我尝试玩预匹配 http://www.php.net/manual/en/function.preg-match.php但我很困惑。
如果有人设法让它与 preg_match 一起工作,我将不胜感激,并解释其背后的逻辑是什么。
您可以使用此正则表达式来捕获之间的字符串{}
\{([^}]*)\}
解释:
-
\{
匹配文字{
-
([^}]*)
捕获所有不属于的字符}
零次或多次。所以它会捕获下一个}
symbol.
-
\}
匹配文字}
你的代码是,
<?php
$regex = '~\{([^}]*)\}~';
$string = "www.example.com/?foo={foo}&test={test}";
preg_match_all($regex, $string, $matches);
var_dump($matches[1]);
?>
Output:
array(2) {
[0]=>
string(3) "foo"
[1]=>
string(4) "test"
}
DEMO http://regex101.com/r/kT6mZ9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)