你可以用
$search_field_pattern = "/\bdata\[SearchForm]\[(\w+)]/i";
if(preg_match($search_field_pattern, "data[SearchForm][somestringhere]", $m)) {
echo $m[1]; // => somestringhere
}
见
PHP demo
模式匹配
-
\b
-词界
-
data\[SearchForm]\[
-文字字符串
data[SearchForm][
(注
[
进行转义以匹配文字
[
字符)
-
(\w+)
-捕获组1:一个或多个字字符
-
]
-一个
]
烧焦。
第三个论点
preg_match
我是说,
$m
,将保存结果。由于必要的子字符串被捕获到组1中,因此使用
$m[1]
是的。
要获取方括号内的最后一个子字符串,可以使用
if(preg_match("~\[(\w+)](?!.*\[\w+])~s", "data[SearchForm][somestringhere]", $m)) {
echo $m[1]; // => somestringhere
}
见
this PHP demo
是的。
要得到第二个,使用
if(preg_match("~\[\w+].*?\[(\w+)]~s", "data[SearchForm][somestringhere]", $m)) {
echo $m[1]; // => somestringhere
}
见
yet another PHP demo
是的。