2016-10-07 6 views
0

В PHP я делаю одну задачу -
Я хочу такое регулярное выражение, который закачает какрегулярное выражение для извлечения URL из строки

$str = "this is my friend's website http://example1.com I think it is coll some text example.com some text t.com/2000 some text rs.500 some text http://www some text" 

как я может принести следующие с помощью регулярных выражений -

http://example1.com 
example.com 
t.com/2000 
http://www 

rs.500 следует избегать!

на самом деле мне нужно такое регулярное выражение, которое может удовлетворить любую ссылку

пожалуйста, помогите мне с этим

+5

А что вы пробовали? –

+0

[Тестирование, тестирование, 1 2 3] (http://www.regextester.com/?fam=95928) – LukStorms

+0

@ DanielDudas Я пробовал, но он дает мне только те URL-адреса, которые имеют https или http ..... can вы, пожалуйста, помогите мне здесь, я все еще пытаюсь ... Если я получу ответ, я обязательно уточню его здесь. – Progi1990

ответ

2

Это регулярное выражение является то, что вы ищете (mandatory regex101 link):

(https?:\/\/\S+)|([a-z]+\.[a-z]+(?:\/\S+)?) 

Это в основном два регулярных выражения https?:\/\/\S+ и [a-z]+\.[a-z]+(?:\/\S+)? помещаются в группы захвата (чтобы вы могли извлечь все URL-адреса с глобальным поиском), а затем в сочетании с OR.

https?:\/\/\S+ находки URL-адреса, которые начинаются с http:// или https:// путем сопоставления:

  • строка "HTTP" буквально http, а затем
  • Необязательный "с" s? с последующим
  • двоеточием и две передние косые черты :\/\/, а затем
  • Один или несколько символов без пробелов \S+

Если https?:\/\/\S+ не соответствует, то [a-z]+\.[a-z]+(?:\/\S+)? умирает и находит URL-адреса, которые не с префиксом http:// или https:// и чьи домены верхнего уровня не содержат номера путем сопоставления:

  • Один или более строчные буквы [a-z]+, а затем
  • точечным \., а затем
  • Один или несколько строчных букв [a-z]+, а затем
  • Опциональный группа, которая состоит из
    • Переднее слэш \/, а затем
    • Один или более непробельных символов \S+
Смежные вопросы