Как я preg_match_all начинается с "http" и заканчивается (") или (') или пробел (табуляции, пробел, разрыв строки) - PullRequest
0 голосов
/ 11 июля 2011

Как мне написать в регулярном выражении, что preg_match_all начинается с "http" (без кавычек) и заканчивается (") или (') или пробелом (табуляция, пробел, перевод строки)

Я хочу, чтобы preg_match_all все части только начинались с "http"

<b>Wupload</b><br>http://www.wupload.com/file/CCCCCCC/NNIW-LiBRARY.part1.rar<br>http://www.wupload.com/file/VVVVVVVV/NNIW-LiBRARY.part2.rar<br>http://www.wupload.com/file/TTTTTTT/NNIW-LiBRARY.part3.rar<br><br><b>Fileserve</b><br>http://www.fileserve.com/file/WWWW/NNIW-LiBRARY.part1.rar<br>http://www.fileserve.com/file/TTTTT/NNIW-LiBRARY.part2.rar<br>http://www.fileserve.com/file/RRRRR/NNIW-LiBRARY.part3.rar<br><br><b>Uploaded.To</b><br><a href="http://ul.to/AAAAA/NNIW-LiBRARY.part1.rar" rel="nofollow">http://ul.to/AAAA/NNIW-LiBRARY.part1.rar</a><br><a href="http://ul.to/BBBBB/NNIW-LiBRARY.part2.rar" rel="nofollow">http://ul.to/BBBBB/NNIW-LiBRARY.part2.rar</a><br><a href="http://ul.to/YYYYYY/NNIW-LiBRARY.part3.rar" rel="nofollow">http://ul.to/YYYYYY/NNIW-LiBRARY.part3.rar</a>

Результаты должны быть такими
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

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Я предлагаю вам использовать parse_url для получения частей URL-адресов! Взгляните на php.net

РЕДАКТИРОВАТЬ:

$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 ...
}
}

ИЗМЕНЕНИЕ:

Хорошо, я не знаю, какой у вас код! Если вы хотите очистить 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 для проверки

0 голосов
/ 11 июля 2011

Это должно сделать то, что вам нужно:

<?php
$matches = array();
preg_match_all('@https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?@', $string, $matches);
foreach ($matches[0] as $match) {
    // Do your processing here.
}
?>
0 голосов
/ 11 июля 2011

Вы имеете в виду, что хотите удалить заголовки "Wupload", "Fileserve" и "Uploaded.To" и захватить только URL-адреса в массиве?Если это так, попробуйте следующее:

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