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
Форумы портала PHP.SU :: Версия для печати :: Поиск ссылки в контенте
Форумы портала PHP.SU » PHP » Программирование на PHP » Поиск ссылки в контенте

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

1. LEONeso - 18 Октября, 2010 - 17:16:16 - перейти к сообщению
Здравствуйте, задумался о том, как найти ссылку типа 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>
2. Саныч - 18 Октября, 2010 - 17:43:56 - перейти к сообщению
Вас интересует регулярка, которой можно это заменять или я чего-то не понял?
И еще, сайт может быть только гугл?
3. LEONeso - 18 Октября, 2010 - 19:41:24 - перейти к сообщению
не могу понять как это реализовывается. своего рода парсер, ищет, находит, заменяет.
(Добавление)
возможно с помощью
PHP:
скопировать код в буфер обмена
  1. string eregi_replace (string шаблон, string замена, string строка)

? конечно с регулярными будет проблема, но если долго мучатся, то что нибудь получится. Просто не знаю как сказать коду ,чтобы он сканировал всю страницу... body
4. Uchkuma - 18 Октября, 2010 - 19:55:52 - перейти к сообщению
Ничего сложного. Главное определить, что будет границей ссылки. Например, любой пробельный символ, кавычка, конец строки.
5. Саныч - 18 Октября, 2010 - 19:59:41 - перейти к сообщению
могу предложить вот это
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('/((?:http\:\/\/)?(w{3}\.)?google\.ru\/(?:[^\/\s])*)/',"<a href=\"\$1\">link</a>",$str);

В качестве $str; скармливать строку, в которой предположительно есть ссылки.
6. Stas.progger - 19 Октября, 2010 - 07:13:19 - перейти к сообщению
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.  
7. LEONeso - 19 Октября, 2010 - 08:11:22 - перейти к сообщению
хочу сделать парсер
перевод ссылки в контенте страницы в плеер.
весьма удобно
8. LEONeso - 19 Октября, 2010 - 12:40:31 - перейти к сообщению
сделал парсер, вернее нашел пример и изменил под себя, но пока не доделано =)
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. }
9. LEONeso - 19 Октября, 2010 - 17:10:55 - перейти к сообщению
Возникла проблема с циклом, каждый цикл - это поиск первого совпадения и поиск его конца, далее все по аналогии, запрос к странице... выведет все одно и то же выводит несколько раз.

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

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

 

Powered by ExBB FM 1.0 RC1