PHP preg_匹配如何在下划线之间grep字符串

PHP preg_匹配如何在下划线之间grep字符串,php,preg-replace,preg-match,Php,Preg Replace,Preg Match,我有这个字符串: mctrn\u 25595\u advandsurtree 我们要对它进行解析,将数字25595提取到一个变量中,基本上将25595\uu后面的任何内容提取到另一个变量中 $scriptBasename = $_SERVER['SCRIPT_FILENAME']; $scriptBasename = basename($scriptBasename); $cuttedName = preg_replace( '/^mctrn_/', '' , $scriptBasename )

我有这个字符串:

mctrn\u 25595\u advandsurtree

我们要对它进行解析,将数字
25595
提取到一个变量中,基本上将
25595\uu
后面的任何内容提取到另一个变量中

$scriptBasename = $_SERVER['SCRIPT_FILENAME'];
$scriptBasename = basename($scriptBasename);
$cuttedName = preg_replace( '/^mctrn_/', '' , $scriptBasename );
$port= preg_match('/[0-9]+/','',$scriptBasename);
$serverName= preg_match('/_"(.*)/','',$cuttedName);

echo($scriptBasename."\r\n"); 
echo($port."\r\n"); 
echo($serverName."\r\n");
命令行中的结果:

php mctrn_25595_AdvandSurthree.php  <<< script filename!
PHP Notice:  Array to string conversion in /home/bent/Downloads/mctrn_25595_AdvandSurthree.php on line 8
Array
0
0

php mctrn_25595_advandsurtree.php如果您知道字符串总是以mctrn_u[一些整数]u[文本字符串]的形式出现,那么您可以使用和:

否则,如果仍要使用,则可以尝试以下方法:

$scriptBasename = $_SERVER['SCRIPT_FILENAME'];
$scriptBasename = basename($scriptBasename);
preg_match('#\_(\d+)+\_(\w+)#',$scriptBasename,$matches);
if (count($matches) > 1) {
    $port = $matches[1];
    $serverName = $matches[2];
    echo($scriptBasename."\r\n"); 
    echo($port."\r\n"); 
    echo($serverName."\r\n");
}

非常感谢,这正是它应该如何工作的。我喜欢你给出多种解决方案的方式。
$scriptBasename = $_SERVER['SCRIPT_FILENAME'];
$scriptBasename = basename($scriptBasename);
preg_match('#\_(\d+)+\_(\w+)#',$scriptBasename,$matches);
if (count($matches) > 1) {
    $port = $matches[1];
    $serverName = $matches[2];
    echo($scriptBasename."\r\n"); 
    echo($port."\r\n"); 
    echo($serverName."\r\n");
}