Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск ссылки в контенте

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: preg_match ?
LEONeso
Отправлено: 18 Октября, 2010 - 17:16:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Здравствуйте, задумался о том, как найти ссылку типа http://www[dot]google[dot]ru/ (и другое любое написание ссылки), далее после того как нашли выдрать и заменить её на другие данные?

Допустим из http://www[dot]google[dot]ru/ в:
CODE (html):
скопировать код в буфер обмена
  1.  <a href="http://www.google.ru/">ссылка</a>


--
preg_match ?

еще обязательный параметр - это домен, обязательно должен быть google.ru, тогда выделять всю ссылку целиком даже если она такого типа:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.google.ru/webhp?hl=ru&tab=2w#hl=ru&expIds=17259,17291,26637,26790,27143,52736&xhr=t&q=%D0%B7%D1%80%D0%B7&cp=3&pf=p&sclient=psy&newwindow=1&site=webhp&source=hp&aq=f&aqi=&aql=&oq=%D0%B7%D1%80%D0%B7&gs_rfai=&pbx=1&fp=f1309cfaab7a60fb


в такой
CODE (html):
скопировать код в буфер обмена
  1. <a href="http://www.google.ru/webhp?hl=ru&tab=2w#hl=ru&expIds=17259,17291,26637,26790,27143,52736&xhr=t&q=%D0%B7%D1%80%D0%B7&cp=3&pf=p&sclient=psy&newwindow=1&site=webhp&source=hp&aq=f&aqi=&aql=&oq=%D0%B7%D1%80%D0%B7&gs_rfai=&pbx=1&fp=f1309cfaab7a60fb">ссылка</a>

(Отредактировано автором: 18 Октября, 2010 - 17:19:05)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 17:43:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Вас интересует регулярка, которой можно это заменять или я чего-то не понял?
И еще, сайт может быть только гугл?


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LEONeso
Отправлено: 18 Октября, 2010 - 19:41:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




не могу понять как это реализовывается. своего рода парсер, ищет, находит, заменяет.
(Добавление)
возможно с помощью
PHP:
скопировать код в буфер обмена
  1. string eregi_replace (string шаблон, string замена, string строка)

? конечно с регулярными будет проблема, но если долго мучатся, то что нибудь получится. Просто не знаю как сказать коду ,чтобы он сканировал всю страницу... body

(Отредактировано автором: 18 Октября, 2010 - 19:46:19)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 18 Октября, 2010 - 19:55:52
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Ничего сложного. Главное определить, что будет границей ссылки. Например, любой пробельный символ, кавычка, конец строки.
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 19:59:41
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




могу предложить вот это
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('/((?:http\:\/\/)?(w{3}\.)?google\.ru\/(?:[^\/\s])*)/',"<a href=\"\$1\">link</a>",$str);

В качестве $str; скармливать строку, в которой предположительно есть ссылки.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Stas.progger
Отправлено: 19 Октября, 2010 - 07:13:19
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




LEONeso, класс SimpleHtmlDom вам в помощь.

Поиск всех ссылок и замена на текст "Это ссылка" реализовать можно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $HtmlCode = YOURHTMLCODE;
  3. $obStr = str_get_html($HtmlCode);
  4.  
  5. foreach($obStr->find('a') as $a) {
  6.       $a->outertext = 'Это ссылка'; // метод замены
  7. }
  8.  
  9. echo $obStr;
  10. $obStr->clear();
  11.  

(Отредактировано автором: 19 Октября, 2010 - 07:15:32)

 
 Top
LEONeso
Отправлено: 19 Октября, 2010 - 08:11:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




хочу сделать парсер
перевод ссылки в контенте страницы в плеер.
весьма удобно

(Отредактировано автором: 19 Октября, 2010 - 12:41:11)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
LEONeso
Отправлено: 19 Октября, 2010 - 12:40:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




сделал парсер, вернее нашел пример и изменил под себя, но пока не доделано =)
PHP:
скопировать код в буфер обмена
  1. function video ($video_url,$w,$h)
  2. {
  3.     echo '<object width="'.$w.'" height="'.$h.'"><param name="movie" value="'.$video_url.'"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="'.$video_url.'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="'.$w.'" height="'.$h.'"></embed></object>';
  4. }
  5.  
  6. for ($i=1;$i<=1;$i++) {
  7.     $content = file_get_contents("http://test/index3.php");//от куда брать
  8.     $pos = strpos($content, "http://"); //ищем начало
  9.     $content = substr($content, $pos); //функция substr в данном случае принимает два параметра: строка для обработки и номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции
  10.     $pos = strpos($content, " ");//ищем конец (тут рпобел)
  11.     $content = substr($content, 0, $pos); // отрезаем нужное количество символов от нулевого
  12.     $content = str_replace('/((?:http\:\/\/)?(w{3}\.)?youtube-nocookie\.com\/(?:[^\/\s])*)/','',$content);
  13.     if (isset($content)) {video ($content,480,385);}
  14. }


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
LEONeso
Отправлено: 19 Октября, 2010 - 17:10:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Возникла проблема с циклом, каждый цикл - это поиск первого совпадения и поиск его конца, далее все по аналогии, запрос к странице... выведет все одно и то же выводит несколько раз.

Хотел на самом деле сделать скан действующей страницы, далее перевод всех найденных ссылок в надлежавший вид.

а получилась грабилка какая-то Не понял Не понял

(Отредактировано автором: 19 Октября, 2010 - 17:11:45)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB