如何preg_match_all以"http"开头并以(")或(')或空格(制表符


How to I preg_match_all starts with "http" and ends with (") or (') or white space(tabs, space, line break)

如何在regex中编写preg_match_all以"http"(不带引号)开头,以(")或(')或空白(制表符,空格,换行符)结尾

我想preg_match_all所有以"http"开头的部分

<>之前 Wupload
http://www.wupload.com/file/CCCCCCC/NNIW-LiBRARY.part1.rar http://www.wupload.com/file/TTTTTTT/NNIW-LiBRARY.part3.rar http://www.wupload.com/file/VVVVVVVV/NNIW-LiBRARY.part2.rar



Fileserve
http://www.fileserve.com/file/WWWW/NNIW-LiBRARY.part1.rar http://www.fileserve.com/file/RRRRR/NNIW-LiBRARY.part3.rar http://www.fileserve.com/file/TTTTT/NNIW-LiBRARY.part2.rar



Uploaded.To

http://ul.to/AAAA/NNIW-LiBRARY.part1.rar http://ul.to/BBBBB/NNIW-LiBRARY.part2.rar
http://ul.to/YYYYYY/NNIW-LiBRARY.part3.rar之前

结果必须像这样
http://www.wupload.com/file/CCCCCCC/NNIW-LiBRARY.part1.rar
http://www.wupload.com/file/VVVVVVVV/NNIW-LiBRARY.part2.rar
http://www.wupload.com/file/TTTTTTT/NNIW-LiBRARY.part3.rar
http://www.fileserve.com/file/WWWW/NNIW-LiBRARY.part1.rar
http://www.fileserve.com/file/TTTTT/NNIW-LiBRARY.part2.rar
http://www.fileserve.com/file/RRRRR/NNIW-LiBRARY.part3.rar
http://ul.to/AAAA/NNIW-LiBRARY.part1.rar
http://ul.to/BBBBB/NNIW-LiBRARY.part2.rar
http://ul.to/YYYYYY/NNIW-LiBRARY.part3.rar

我建议您使用parse_url来获取部分url !看看php.net

EDIT:

$file = file_get_contents( YOUR FILE NAME );
$lines = explode("'r'n", $file);
foreach( $lines as $line ){
$urlParts = parse_url( $line );
if( $urlParts['scheme'] == 'http' ){
 // Do anything ...
}
}

CHANGE:

看,我不知道你的代码是什么!如果你想抓取HTML来找到链接,我建议你这样做,它会返回标签的href值给你:

preg_match_all ( "/<[ ]{0,}a[ 'n'r][^<>]{0,}(?<= |'n|'r)(?:href)[ 'n'r]{0,}=[ 'n'r]{0,}['"|']{0,1}([^'"'>< ]{0,})[^<>]{0,}>((?:(?!<[ 'n'r]*'/a[ 'n'r]*>).)*)<[ 'n'r]*'/a[ 'n'r]*>/ is", $source, $regs );
for ( $x = 0; $x < count ( $regs [ 1 ] ); $x ++ ) {
$tmp_array [ "link_raw" ] = trim ( $regs [ 1 ] [ $x ] );
}

然后使用parse_url检查

您的意思是要删除"Wupload", "Fileserve"answers"上载" ?标题和捕获url在数组中?如果是,请尝试以下操作:

preg_match_all('!^http://.*'n!m', $string, $matches);
echo "<pre>" . print_r($matches, 1) . "</pre>";

这应该可以满足您的需求:

<?php
$matches = array();
preg_match_all('@https?://([-'w'.]+)+(:'d+)?(/([-'w/_'.]*('?'S+)?)?)?@', $string, $matches);
foreach ($matches[0] as $match) {
    // Do your processing here.
}
?>