以下内容:
$key = "[[question(8)]]";
preg_match( '/\((.*?)\)/', $key, $questionID );
print_r( $questionID );
输出:
Array
(
[0] => (8)
[1] => 8
)
我只想输出8
我做错了什么?
答案 0 :(得分:2)
preg_match只返回一个数组。
您需要执行以下操作:
$questionID = $questionID[1];
从手册:
如果提供了$ matches [第三个参数],那么它将填充搜索结果。
$matches[0]
将包含与完整模式匹配的文本,$matches[1]
将获得与第一个捕获的文本匹配的文本 带括号的子模式,依此类推。
答案 1 :(得分:0)
第一个索引是你的正则表达式的整个匹配。第二个索引是第一个捕获组。捕获组由()
标识。因此,在这种情况下,您的第一个(也是唯一的)捕获组是(.*?)
。如果你有第二个捕获组,它将在数组的下一个索引中。
如果您只想返回第一个捕获组,请执行$questionID[1]
答案 2 :(得分:0)
如果您只需要那个号码,那么根本不需要数组。要不返回数组,请使用返回string
的函数,例如preg_replace
。
$key = "[[question(8)]]";
$questionID = preg_replace( '/[^0-9]/', '', $key );
var_dump ( $questionID );