![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
正则初学者,请勿打击,
[PHP]
<?php
/**
* 函数名称: parseDSNString
* 函数功能: 解析DSN字串
* 输入参数: dsnstring (string)
* 函数返回类型: array
* DSN 格式: databaseprotocol://[username:[password]@]hostname[:port]/instancename/[misc/]
* DSN eg1: mysql://root:foo@localhost:3306/test/pconnect/
* DSN eg2: mssql://sa@127.0.0.1:1433/temp/
* DSN eg3: oracle://system:manager@localhost:1521:/mydata/
* DSN eg4: mysql://localhost:3306/test/
*/
function parseDSNString($dsnstring)
{
preg_match_all("/([a-zA-Z0-9._]+):\/\/(?
[^:]+):?([^@]*)@|)([^:\/]+)(?:
[\d^\/]+)|)\/([^\/]+)\/(?
[^\/]+)\/|)/",$dsnstring,$dsnarray);
$configarray=array();
$configarray['dsnstring']=$dsnarray[0][0];
$configarray['databaseprotocol']=$dsnarray[1][0];
$configarray['username']=$dsnarray[2][0];
$configarray['password']=$dsnarray[3][0];
$configarray['hostname']=$dsnarray[4][0];
$configarray['port']=$dsnarray[5][0];
$configarray['instancename']=$dsnarray[6][0];
$configarray['misc']=$dsnarray[7][0];
return $configarray;
}
?>
[/PHP]
用例:
[PHP]
<?php
$myDSN='mysql://name:pass@localhost:3306/project/connect/';
print_r(parseDSNString($myDSN));
?>
[/PHP]
返回:
CODE: Array ( [dsnstring] => mysql://name:pass@localhost:3306/project/connect/ [databaseprotocol] => mysql [username] => name [password] => pass [hostname] => localhost [port] => 3306 [instancename] => project [misc] => connect ) |
我想是不是用这种的方式配置连接的时候会比较方便?

