За последние 24 часа нас посетили 15477 программистов и 1593 робота. Сейчас ищут 874 программиста ...

Достать url из текста

Тема в разделе "PHP для новичков", создана пользователем blow, 11 сен 2010.

  1. blow

    blow Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    London
    в PHP пока что новичок.
    Есть текстовый файл, периодически в нем встречаются ссылки, видa http://domain.com./etc .
    Нужно достать все url адреса из текст файла и вывести на экран! Не знаю какими функциями лучше пользоваться, и как работать с маской.. спасибо!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    igordata, неужели наконец-то надоело решать чужие задачки? =) Долго держался
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ShamahN
    не надоело. просто чел попросил строковые функи. вот они.
     
  5. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    PHP:
    1.     preg_match_all('#\b(https?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#ism', $text, $urls);
    2.     $urls = $urls[1];
    3.     $urls = array_unique($urls);
    4.  
    както так, дальше сам.
     
  6. blow

    blow Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    London
    спасибо разобрался, зная что в одной строке может быть только одна URL, построчно выводить файл и разделять строку explode(). спасибо за ссылку
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    blow
    плясать надо от правил урлов, а не от того где они и как. например пробелов в урле нету =) начинается он с http:// или с https://
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    igordata
    Давным-давно я хотел написать что-то универсальное - не получилось.
    Смотри:
    протокол://
    Клиент:
    ed2k:
    mailto:
    magnet:
    И совсем интересно:
    skype?username

    И ещё были(
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Код (Text):
    1. #(?:(?:https?|ftp)\:\/\/)?(?:(?:[a-z0-9]{2,}[\.\-]?)+\.[a-z0-9]{2,}\.?)(?:\/[^\s]*)?#is
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Apple
    ну надо знать протоколы заранее. иначе конечно он может и на смайлики сагриться. :D

    В хттп прописано, какие символы допустимы. встреча с любым другим символом - урл кончился. =) Естественно возникают русские буквы, и их надо думать, конвертить ли в урл или тупо отбросить. Реализацию последнего типа можно встретить на этом форуме =)
     
  11. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Протоколы передачи знать не надо, у них общий шаблон (протокол://)
    Я говорю о систематизации элементов как ссылок, наподобии skype?, icq?, и др.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Apple
    Чета тебя прет =)

    ну допустим не надо знать.

    слово://слово

    а ради чего это кстати ты хотел замутить?
     
  13. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    так то вообще то

    proto:word :)

    proto://word - частный случай уже)
     
  14. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    вообще то паттерн такой:
    протокол:/

    второй слэш относится к пути относительно директории проекта.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прикольно.


    кстати о чем мы вобще?