我需要一个正则表达式来解析FTP URL

时间:2012-10-28 05:55:32

标签: php regex

有人可以帮我构建一个preg_match模式来匹配这些数据吗?

我有这样的数据

ftp://username:password@server <br>
ftp://username:password@server <br>
ftp://username:password@server <br> 
等等

我希望preg_match将每一行作为变量匹配,并在foreach循环中使用它

感谢

2 个答案:

答案 0 :(得分:0)

你不需要preg_match。你可以使用爆炸。确保在爆炸后使用array_pop消除最后一个空键。

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

现在,数组的每个值都包含链接但不包含“br”标记。我认为应该这样做。

您的数据是否以下列方式?

$str=    "ftp://username:password@server <br>
          ftp://username:password@server <br>
          ftp://username:password@server <br>";

如果是,我的解决方案将有效。

答案 1 :(得分:0)

在简单的情况下它是......但你应该检查rfcs以查看这些URL中允许或不允许的字符。

<?php

$lines=explode("\n","ftp://username:password@server <br>
ftp://username:password@server <br>
tp://username:password@server <br>
ftp://username:password@server <br>");

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