只是一个简单,具体的问题:
我有字符串{var1}12345{var2}
,我想获得使用的变量名。
if (preg_match("/{([a-zA-Z0-9]*)}/g", $url, $matches)) {
print_r($matches);
}
如果我删除全局标志,它可以工作,但我只按预期获得第一个变量。为什么不使用全球旗帜?当我使用Regex Tester
进行测试时,它可以正常工作答案 0 :(得分:3)
preg_match()返回模式匹配的次数。这将是0次(不匹配)或1次,因为 preg_match()将在第一次匹配后停止搜索。相反,preg_match_all()将一直持续到主题结束。如果发生错误,preg_match()返回FALSE。
答案 1 :(得分:2)
使用preg_match_all获取多个匹配项:
if (preg_match_all("/{([a-zA-Z0-9]*)}/", $url, $matches)) {
print_r($matches[1]);
}
答案 2 :(得分:1)
这应该可以解决问题(如果您需要格式为 {name} 的变量):
$url = "{var1}12345{var2}";
if (preg_match_all("/{[a-zA-Z0-9]*}/", $url, $matches)) {
print_r($matches);
}