2012-01-03 79 views
0

我正在尋找一種方式如何轉換PEAR:DB/MDB2-style DSN轉換PEAR :: DB-風格DSN爲PDO-DSN

phptype://username:[email protected]/database 

成格式由PHP PDO(such as this mysql case

$dsn = 'mysql:host=localhost;dbname=testdb'; 
$username = 'username'; 
$password = 'password'; 

我支持正在尋找一些現有的實施,但找不到任何東西。

+0

我不知道任何現有的解決方案,但它似乎這將是一個非常速戰速決推出自己的解決方案,因爲您正在處理源和目標字符串的特定已知格式......也許有一個正則表達式。 – rdlowrey 2012-01-03 01:22:01

+0

@rdlowrey,是的,這是我必須做的。下面提供的代碼。很高興看到其他一些實現,因爲我不確定我是否正確處理了所有可能的格式。 – romaninsh 2012-01-03 01:39:38

回答

0

我已經解決了這個問題的代碼,但它沒有很好的測試:

preg_match('|([a-z]+)://([^:]*)(:(.*))[email protected]([A-Za-z0-9\.-]*)(/([0-9a-zA-Z_/\.]*))|', 
    $dsn,$matches); 
$dsn=array(
    $matches[1].':host='.$matches[5].';dbname='.$matches[7], 
    $matches[2], 
    $matches[4] 
);