2012-10-28 40 views
-2

有人可以幫我構建一個preg_match模式來匹配這個數據嗎?我需要一個正則表達式來解析FTP URL

我有這樣

ftp://username:[email protected] <br> 
ftp://username:[email protected] <br> 
ftp://username:[email protected] <br> 

ECT數據

我想的的preg_match到

感謝

+0

分割線時會出現什麼問題?你想要什麼正則表達式?如果您正在嘗試獲取URL的組件,請查看'parse_url()'。 http://php.net/manual/en/function.parse-url.php – Brad

回答

0

匹配每條線作爲一個變量,和使用,在一個foreach循環你不需要preg_match。你可以使用爆炸。請確保在爆炸後使用array_pop以消除最後一個空鍵。

<?php 
$linkArray = explode(" <br>",$links); 
array_pop($linkArray); 
?> 

現在,數組的每個值都將包含鏈接,但不包含「br」標籤。我認爲應該這樣做。

你的數據是以下方式嗎?

$str= "ftp://username:[email protected] <br> 
      ftp://username:[email protected] <br> 
      ftp://username:[email protected] <br>"; 

如果是,我的解決方案將工作。

+0

不,爆炸只是讓我回到整個字符串,我需要將字符串分爲數組變量 –

+0

所有三個url線都在一個字符串? –

+1

'list($ var1,$ var2,$ var3)= explode(...)'? –

0

在簡單的情況下,它是...但你應該檢查rfcs,看看在這樣的URL中允許或不允許使用哪些字符。

<?php 

$lines=explode("\n","ftp://username:[email protected] <br> 
ftp://username:[email protected] <br> 
tp://username:[email protected] <br> 
ftp://username:[email protected] <br>"); 

foreach ($lines as $line) { 
if (preg_match('/^ftp:\/\/[\da-z]+:[^\@]+\@[^\s]+ <br>\s*$/',$line)) {echo "$line is ok\n";} 
}