2016-03-20 19 views
0

PHP IMAP拡張のようにホスト情報(ホスト名、ポート、接頭辞...)を取得しようとしていますが、わかりません。例えば、文字列:PHP IMAP拡張のようなホスト情報を解析する

$host = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX' 

近い私が思いついたphpmailerのは、(ソースコードから取られたコード)いました:

$hostinfo = array(); 
if (!preg_match('/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/', trim($hostentry), $hostinfo)) { 
    die(' Not a valid host entry'); 
} 
// $hostinfo[2]: optional ssl or tls prefix 
// $hostinfo[3]: the hostname 
// $hostinfo[4]: optional port number 
// The host string prefix can temporarily override the current setting for SMTPSecure 
// If it's not specified, the default value is used 

をしかし、私はそこに着くことができません。

ご協力いただければ幸いです。

+0

あなたは(接頭辞)いくつかのより多くの例の文字列を持っていますか? – netblognet

+0

これは物語です、あなたの質問は何ですか? – tmthydvnprt

答えて

3

は、この方法を試してください。

<?php 
    $sourcestring='{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX'; 
    preg_match_all('/{((?<proto>[^:]+?):\/\/)?(?<host>[^:\/]+?)(:(?<port>\d+?))?\/(?<path>[^}]+?)?}(?<folder>.+)/m',$sourcestring,$matches); 
    echo "<pre>".print_r($matches,true); 
?> 

それは名前のグループなどの部品をキャプチャします。パーツは名前( 'proto'、 'host'、 'port'、 'path'、 'folder')で取得できます。

(それはちょうどクイックショットだ。何かがまだ収まらないのであれば、私に知らせてください。)

+0

それは動作します! ありがとう! –

+0

それが動作する場合。私の答えを正しい答えとして受け入れてください。 ;-) – netblognet

関連する問題