20,397
社区成员




$dsnStr = "mysql://root:password@127.0.0.1:8040/mypro_db";
$info = parse_url($dsnStr);
var_dump($info); //返回false
preg_match('/^(.*?)\:\/\/(.*?)\:(.*?)\@(.*?)\:([0-9]{1, 6})\/(.*?)$/',trim($dsnStr),$matches);
var_dump($matches); //返回空数组
<?php
$dsnStr = "mysql://root:password@127.0.0.1:8040/mypro_db";
$info = parse_url($dsnStr);
var_dump($info); //返回false
preg_match('/^(.*?)\:\/\/(.*?)\:(.*?)\@(.*?)\:([0-9]{1,6})\/(.*?)$/',trim($dsnStr),$matches);
var_dump($matches); //返回空数组
?>
array (size=6)
'scheme' => string 'mysql' (length=5)
'host' => string '127.0.0.1' (length=9)
'port' => int 8040
'user' => string 'root' (length=4)
'pass' => string 'password' (length=8)
'path' => string '/mypro_db' (length=9)
array (size=7)
0 => string 'mysql://root:password@127.0.0.1:8040/mypro_db' (length=45)
1 => string 'mysql' (length=5)
2 => string 'root' (length=4)
3 => string 'password' (length=8)
4 => string '127.0.0.1' (length=9)
5 => string '8040' (length=4)
6 => string 'mypro_db' (length=8)
不是什么诡异问题,是你写错了正则,这里你多了一个空格导致,删除就可以了。
preg_match('/^(.*?)\:\/\/(.*?)\:(.*?)\@(.*?)\:([0-9]{1,空格6})\/(.*?)$/',trim($dsnStr),$matches);