2014-10-23 2 views
0

У меня есть строка из URL-адреса и разделена <br> тегами. Я использую это регулярное выражение для соответствия URL-адресам: /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/gRegex - строка заканчивается <br>

Вышеупомянутая строка соответствует целой строке, которая не является тем, что я хочу. Мне нужны URL-адреса без тегов
.

Я попытался добавить замену (\/\S*) на (<br>\/\S), но он возвращает неправильные результаты.

Какое правильное решение?

Пример списка URL:

http://www.google.com/explearning/4a1f519153c809a424ee2d3ed93b685a<br>http://www.google.com/explearning/e3fa4315175288ea85b7682c34d9f504<br>http://www.google.com/explearning/e818d4fd6d546844d63fb9e160cf046e<br>http://www.google.com/explearning/5d4c6b570e6bfa918b7b4be14cc41a42<br>http://www.google.com/explearning/adf3d853c1bb4f5f30efc64802c30d75<br> 
+1

'$ URLs = взрывается ('
', $ строки);' – AbraCadaver

+0

необходимости использовать регулярное выражение –

+1

затем 'preg_split ('/
/', $ string); ' –

ответ

1

Лучший способ извлечения адреса из вашей строки является использование взрываются, а затем, если вы хотите, чтобы проверить, если каждая из частей уважительных ссылок, вы можете использовать FILTER_VALIDATE_URL, пример :

$parts = explode('<br>', $yourstring); 
$urls = array(); 

foreach($parts as $part) { 
    if(filter_var($part, FILTER_VALIDATE_URL)) 
     $urls[] = $part; 
} 

Если вы хотите, чтобы проверить, что ваша строка состоит только из URL-адресов, разделенных <br> тегов, вам нужно всего лишь сравнить длину $parts с длиной $urls. Если две длины равны, строка будет такой, какая вы хотите. Но вы можете сделать цикл foreach более совершенным. Когда часть не является URL, вы можете остановить цикл Еогеаспа:

$parts = explode('<br>', $yourstring); 
$urls = array(); 

foreach($parts as $part) { 
    if(filter_var($part, FILTER_VALIDATE_URL)) 
     $urls[] = $part; 
    else break; 
} 

if (count($parts) == count($urls)) 
    print_r($urls); 
+0

Несмотря на то, что OP-состояние regex, это более эффективный подход IMO. – hwnd

+0

Единственная проблема заключается в том, что я не могу гарантировать, что список является чисто URL-адресом и
тегами. –

+0

@NuGnojMik: Я понимаю, но что вы хотите сделать, если подстроки, разделенные «
», не являются URL-адресами? Поиск ссылок в этих подстроках почти невозможно с помощью шаблона и разумного мозга. Но если ваша строка не такая, как вы описываете ее в своем вопросе, добавьте больше информации о том, как она выглядит. –

Смежные вопросы