Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти, вырезать и дополнить УРЛы из текста 
:(
    Опции темы
Wowa
Дата 26.3.2005, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Есть текст. В нем есть адреса страниц в перемешку с пробелами переводами строк. Может запятыми еще... или ;

Нужно найти все адреса веб-страниц, которые в этом тексте есть.
Если адрес написан без http, то дополнить его прибавление спереди http://
Затем все собранные и дополненные адреса запихнуть в массив.
PM WWW   Вверх
Irokez
Дата 26.3.2005, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



preg_match_all?
PM   Вверх
Wowa
Дата 26.3.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Irokez @ 26.3.2005, 12:50)
preg_match_all?

Да. А какой регексп?
PM WWW   Вверх
IZ@TOP
Дата 26.3.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Admin, ну может это поможет:

Код

<pre>
<?php

$text = "Hello !!!! whrglkjwer erw hgweuig iul h gerui t348yv9 b823y590q971t-90 ADSL;

FWERKKTN V3WG4VM90 
]
http://www.agava.com/?sn=6&f9034%20&fek=//\3mainp_--32480=
+12

";

preg_match_all("%(http://[^ ]*)%si", $text, $m);

print_r($m);

?></pre>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 26.3.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



IZ@TOP спасибо. Поможет, но частично только. Т.к. урлы в тексте могут быть без http и по идее, даже без www.
PM WWW   Вверх
IZ@TOP
Дата 26.3.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Admin, что то мне подсказывает что это будет очень сложно реализовать. Даже при постановке вопроса что в урл может быть знак переноса строки, вдруг после переноса будет простой текст? Получиться что он станет частью урла.
Добавлено @ 16:17
Еще есть такой вариант:

Код

<pre>
<?php

$text = "Hello !!!! whrglkjwer erw hgweuig iul h gerui t348yv9 b823y590q971t-90 ADSL;

FWERKKTN V3WG4VM90 
]
http://www.agava.com/?sn=6&f9034%20&fek=//\3mainp_--32480=
+12
 
ppp.com.ru/

";

preg_match_all("%([a-z0-9\.\-]{2,}\.[a-z]{2,4}[^ ]*)%si", $text, $m);

print_r($m);

?></pre>

Добавлено @ 16:18
Цитата
Array
(
    [0] => Array
        (
            [0] => www.agava.com/?sn=6&f9034%20&fek=//mainp_--32480=
+12

            [1] => ppp.com.ru/


        )

    [1] => Array
        (
            [0] => www.agava.com/?sn=6&f9034%20&fek=//mainp_--32480=
+12

            [1] => ppp.com.ru/


        )

)



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 26.3.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Получаем из текста все URL'ы

Вариант 1. Получаем все URL'ы, в виде http://somedomain.com или somedomain.com. При этом мы сразу осуществляем проверку на их правильность.
Код
<?php

if( preg_match_all( "#(((http|ftp|https):\/\/)|\s)((\w|\d){1,}(\-|\.){0,1}(\w|\d){1,})+?\.(\w){2,4}\/*\s#i" , $text , $matches ) )
  {  print_r ( $matches[0] );  }
else
  {  print "No urls found.";  }

?>


Вариант 2. Получаем все URL'ы, с параметрами и без (т.е. с QUERY_STRING), но при этом не проверяем правильность QUERY_STRING. Тут же мы сможем получить URL'ы с каталогами, т.е. /news/12/12/2003/index.html, опять же без проверки оных.
Код
<?php

if( preg_match_all( "#(((http|ftp|https):\/\/)|\s)((\w|\d){1,}(\-|\.){0,1}(\w|\d){1,})+?\.(\w){2,4}.*?\s#i" , $text , $matches ) )
  {  print_r ( $matches[0] );  }
else
  {  print "No urls found.";  }

?>


Вариант 3. Самый простой, без любых проверок
Код
<?php

if( preg_match_all( "#(((http|ftp|https):\/\/)|\s).*?\s#i" , $text , $matches ) )
  {  print_r ( $matches[0] );  }
else
  {  print "No urls found.";  }

?>


Единственно что \w\d в целях безопасносии надо на [A-Z0-9] заменить ну и скобок меньше.

Это сообщение отредактировал(а) Mal Hack - 26.3.2005, 19:46
PM ICQ   Вверх
CyClon
Дата 18.2.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Все урлы читать справа налево и смотреть, есть ли . (точка) справа, т.е. до 4 символов. Может конечно и справа налево можно. Но других варантов нету помоему, ведь PHP - не ИИ.


--------------------
user posted image
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.