-1
我想用预浸料的比赛,我的用户可以使用这种类型的用户名寄存器: 名称#3digit使用的preg_match:用户#345
我用#问题。 这是什么代码的问题:你不需要这部分?P
if (!preg_match("/(\w+)#(?P\d{3})/",$_REQUEST['irc_channel']))
我想用预浸料的比赛,我的用户可以使用这种类型的用户名寄存器: 名称#3digit使用的preg_match:用户#345
我用#问题。 这是什么代码的问题:你不需要这部分?P
if (!preg_match("/(\w+)#(?P\d{3})/",$_REQUEST['irc_channel']))
,它COS的命名子模式。所以如果你需要的话可以使用它。见:PHP: Subpatterns - Manual
这会给你想要的;
$r = preg_match('~(\w+)#(\d+)~i', 'user#345', $m);
print_r($r); // 1
print_r($m); // Array([0] => user#345 [1] => user [2] => 345)
$r = preg_match('~(\w+)#(\d+)~i', 'user......#345', $m);
print_r($r); // 0 error!
如果你需要的子模式? (但据我看到,在这种情况下你不需要任何数组结果,只要检查输入是否有效)。
$r = preg_match('~(\w+)#(?P<id>\d+)~i', 'user#345', $m);
print_r($m); // Array([0] => user#345 [1] => user [id] => 345 [2] => 345)
因此最后;
if (!preg_match('~(\w+)#(\d+)~i', $_REQUEST['irc_channel']))
// actually this would work too
if (!preg_match('~\w+#\d+~i', $_REQUEST['irc_channel']))