PHP:如何通过regexp获取子_字符串

PHP:如何通过regexp获取子_字符串,php,regex,Php,Regex,我有这样的访问规则: RewriteRule ^([A-z])([0-9]+)-([^/]*)?$ index.php?tt=$1&ii=$2&ll=$3 有任何PHP函数可以做同样的事情吗? 比如: $A = XXXX_preg_match("([A-z])([0-9]+)-([^/]*)" , "A123-boooooo"); // $A become to =array("A","123","boooooo") 据博士说 输出: Array ( [0] =>

我有这样的访问规则:

RewriteRule ^([A-z])([0-9]+)-([^/]*)?$ index.php?tt=$1&ii=$2&ll=$3
有任何PHP函数可以做同样的事情吗?
比如:

$A = XXXX_preg_match("([A-z])([0-9]+)-([^/]*)" , "A123-boooooo");
// $A become to =array("A","123","boooooo")
据博士说

输出:

Array
(
    [0] => A123-boooooo
    [1] => A
    [2] => 123
    [3] => boooooo
)

如果您只想检索这三个值,您可以向
preg\u match
传递一个参数,如下所示:

preg_match(
    '~^([A-z])([0-9]+)-([^/]*)$~' ,
    'A123-boooooo',
    $matches
);

$fullMatch = $matches[0]; // 'A123-boooooo'
$letter = $matches[1];    // 'A'
$number = $matches[2];    // '123'
$word = $matches[3];      // 'boooooo'

// Therefore
$A = array_slice($matches, 1);
如果要立即进行更换,请使用
preg\u replace

$newString = preg_replace(
    '~^([A-z])([0-9]+)-([^/]*)$~',
    'index.php?tt=$1&ii=$2&ll=$3',
    'A123-boooooo
);
对于进一步的信息来说,这些信息通常是非常有用的

preg_match('/([a-zA-Z])(\d+)-([^\/]+)/', 'A123-boooooo', $A);
array_shift($A);
输出:
打印($A)


您缺少原始正则表达式中的锚。@m-buettner-非常感谢!您缺少原始正则表达式中的锚。
preg_match('/([a-zA-Z])(\d+)-([^\/]+)/', 'A123-boooooo', $A);
array_shift($A);
Array
(
    [0] => A
    [1] => 123
    [2] => boooooo
)