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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
A.N.R.I
Отправлено: 03 Июля, 2010 - 00:09:07
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




Нужно из строки
<?xml version="1.0"?> <response status="302"> <finalAddress><![CDATA[http://ссылка любой длины с любими символами аж до этих скобок ]]></finalAddress> </response>

вытянуть просто ссылку ввиде http://link[dot]com/2123123123123?v=a12323 . Помогите, а то не могу понять эти регулярные выражения Недовольство, огорчение


-----
 
 Top
alexspb
Отправлено: 03 Июля, 2010 - 19:36:26
Post Id


Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. $str = <<<END
  2. <?xml version="1.0"?> <response status="302"> <finalAddress><![CDATA[http://ссылка любой длины с любими символами аж до этих скобок ]]></finalAddress> </response>
  3. END;
  4. preg_match_all('#<!\[CDATA\[(http://(?:[^\]]+))]#i', $str, $links);
  5.  
  6. print_r($links);


-----
Хостинг - неограниченно доменов на одну папку
Ajax - отличное введение
 
 Top
A.N.R.I
Отправлено: 03 Июля, 2010 - 22:05:55
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




Спасибо, но выводит Array ( [0] => Array ( ) [1] => Array ( ) ) Недовольство, огорчение. Я что-то не так сделал? И подскажите отличную статейку о регулярных выражениях. Я несколко раз садился их учить, но так и не могу осилить Недовольство, огорчение


-----
 
 Top
A.N.R.I
Отправлено: 04 Июля, 2010 - 08:47:33
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




Так, если делать уже с напечатаным текстом - то выходит, а если с source кодом, то массив пустой Недовольство, огорчение

Код получаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ch = curl_init(); // initialize curl handle
  3.         curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
  4.         curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
  5.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
  6.         curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
  7.         $document1 = curl_exec($ch);
  8. print   $document=htmlspecialchars($document1);
  9.  


-----
 
 Top
movEAX
Отправлено: 05 Июля, 2010 - 07:35:54
Post Id



Частый посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. $text ='
  2. <?xml version="1.0"?>
  3. <response status="302">
  4.  <finalAddress><![CDATA[http://ссылка любой длины с
  5.  любими символами аж до этих скобок ]]>
  6.  </finalAddress> </response>';
  7.  
  8. $pattern = '@<finalAddress>.+(http[^\]]+)@sm';
  9. preg_match_all($pattern, $text, $text) ;
  10. print_r($text);


-----
армия.. самое убогое место
 
 Top
A.N.R.I
Отправлено: 05 Июля, 2010 - 11:16:37
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




если брать написаный текст - все пашет, а от из полученого соурс кодом нет- вот как я делал:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <form action="" method="post">
  4.                 <p align="center">
  5.                 <input type="text" name="links" id="links" size=80/>
  6.                         <input type="submit" name="submit" id="submit" value="Скачать"/>
  7.         </p>
  8.     </form>
  9. <?php
  10.    $link=$_POST['links'];
  11.    $link=substr($link,39);
  12.    $link="bl.rutube.ru/".$link.".xml";
  13.         $url = $link;
  14.         $ch = curl_init(); // initialize curl handle
  15.         curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
  16.         curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
  17.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
  18.         curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
  19.         $document1 = curl_exec($ch);
  20.         $document=htmlspecialchars($document1);
  21.  
  22.  
  23. $str = '
  24. <?xml version="1.0"?> <response status="302"> <finalAddress><![CDATA[http://ссылка любой длины с любими символами аж до этих скобок ]]></finalAddress> </response>
  25. ';
  26. preg_match_all('#<!\[CDATA\[(http://(?:[^\]]+))]#i', $str, $links);
  27.  
  28. //print_r($links);
  29. $text =$document;
  30.  
  31. $pattern = '@<finalAddress>.+(http[^\]]+)@sm';
  32. preg_match_all($pattern, $text, $text) ;
  33. print_r($text);
  34.  
  35.    $link=substr($document1,73,250);  
  36.    print "<p><span id='response'><a href='".$link."'>Скачать</a></span></p>"
  37.  
  38. // http://rutube.ru/tracks/2753377.html?v=f826e5dd737061c0b36c6d0a759d1d84    
  39.  
  40. // downrut
  41. ?>
  42.  
  43.  


-----
 
 Top
scarbo
Отправлено: 05 Июля, 2010 - 17:48:04
Post Id


Новичок


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


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




Зачем тут вообще регулярка?Это же xml
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. /**
  4.  * @author scarbo
  5.  * @copyright 2010
  6.  */
  7.  
  8. $xml = '<?xml version="1.0"?> <response status="302"> <finalAddress><![CDATA[http://ссылка любой длины с любими символами аж до этих скобок ]]></finalAddress> </response>';
  9.  
  10. $dom = new DOMDocument('1.0', 'utf-8');
  11. $dom->loadXML($xml);
  12. //$dom->load($url);//или грузим из внешнего источника
  13. $items = $dom->getElementsByTagName('finalAddress');
  14. foreach ($items as $item) {
  15.     print $item->nodeValue . '<br />';
  16. }
  17. //print $dom->getElementsByTagName('finalAddress')->item(0)->nodeValue;//или так, если тег finalAddress всего один.
  18.  
  19. ?>
 
 Top
ALEN
Отправлено: 05 Июля, 2010 - 20:17:00
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




scarbo
Не поверите, но есть еще проще функции:
simplexml_load_file -- Interprets an XML file into an object
simplexml_load_string -- Interprets a string of XML into an object
 
 Top
scarbo
Отправлено: 05 Июля, 2010 - 22:28:53
Post Id


Новичок


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


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




ALEN, я в курсе.Просто я использую DomDocument, для работы с xml.
По любому, для выборки данных из xml-форматированных строк, надо использовать xml-либы, а не регулярки.(собственно для этого либы и создавались)
 
 Top
A.N.R.I
Отправлено: 05 Июля, 2010 - 23:03:30
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




О спасибо. Только на денвере пашет, а от на хостингу нет Недовольство, огорчение Вот сайт: http://bit[dot]ly/9i0yY4 Может из-за халявного хостинга?


-----
 
 Top
ALEN
Отправлено: 05 Июля, 2010 - 23:06:29
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




A.N.R.I
Что именно?
 
 Top
A.N.R.I
Отправлено: 05 Июля, 2010 - 23:13:41
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




Вот смотри: зашел на сайт ввел ссылку типа http://rutube[dot]ru/tracks/2961300[dot][dot][dot][dot]a04241b5e928253d . Появилось скаачать: жмешь а оно просто окрывает страницу. Если на компе своем запустить скрипт - все работает. В чем проблема может быть? В бесплатном хостинге?


-----
 
 Top
scarbo
Отправлено: 06 Июля, 2010 - 08:24:32
Post Id


Новичок


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


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




На бесплатном хостинге может вообще не быть php, или запрещен доступ к загрузке внешних данных(не из родного домена).
 
 Top
A.N.R.I
Отправлено: 06 Июля, 2010 - 08:54:26
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


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




Нет РНР есть. скрипт пашет. Кто-то может протестить файл у себя на платном хостинге?

Вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form action="" method="post">
  3.                 <p align="center">
  4.                 <input type="text" name="links" id="links" size="80"/>
  5.                         <input type="submit" name="submit" id="submit" value="Скачать"/>
  6.         </p>
  7.     </form>
  8. <?php
  9.    $link=$_POST['links'];
  10.    $link=substr($link,39);
  11.    $link="http://bl.rutube.ru/".$link.".xml";
  12.         $url = $link;
  13.         $ch = curl_init(); // initialize curl handle
  14.         curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
  15.         curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
  16.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
  17.         curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
  18.         $document1 = curl_exec($ch);
  19.         $document=htmlspecialchars($document1);
  20.  
  21.  
  22. $dom = new DOMDocument('1.0', 'utf-8');
  23.  
  24. $dom->load($url);//или грузим из внешнего источника
  25. $items = $dom->getElementsByTagName('finalAddress');
  26. foreach ($items as $item) {
  27.    print "<span id='response'><a href='".$item->nodeValue . "'>Скачать</a></span><br />";
  28. }
  29. //print $dom->getElementsByTagName('finalAddress')->item(0)->nodeValue;//или так, если тег finalAddress всего один.
  30. // http://rutube.ru/tracks/2753377.html?v=f826e5dd737061c0b36c6d0a759d1d84    
  31.  
  32. // downrut
  33. ?>
  34.  
  35.  
  36.  


Буду очень признательный


-----
 
 Top
scarbo
Отправлено: 06 Июля, 2010 - 09:20:28
Post Id


Новичок


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


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




Скрипт у тебя не правильный.
Вот результат - http://fgcs[dot]ru/test/TwitterAdmin/data/test.php
Срипт
PHP:
скопировать код в буфер обмена
  1. <form action="test.php" method="post">
  2.         <p align="center">
  3.         <input type="text" name="links" id="links" size="80"/>
  4.         <input type="submit" name="submit" id="submit" value="Download"/>
  5.         </p>
  6. </form>
  7. <?PHP
  8.  
  9. /**
  10.  * @author scarbo
  11.  * @copyright 2010
  12.  */
  13. if (@$_REQUEST['submit']) {
  14.     $link = $_POST['links'];
  15.     $link = substr($link, 39);
  16.     $link = 'http://bl.rutube.ru/' . $link . '.xml';
  17.     //
  18.     $dom = new DOMDocument('1.0', 'utf-8');
  19.  
  20.     $dom->load($link);
  21.     $items = $dom->getElementsByTagName('finalAddress');
  22.     foreach ($items as $item) {
  23.         print "<span id='response'><a href='" . $item->nodeValue .
  24.             "'>Download Video File</a></span><br />";
  25.     }
  26. }
  27. ?>

---
Хотя, нет.Тоже не фурычит.
Смотри на локалке формируется такая ссылка
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://video-7-15.rutube.ru/s5-05/vol25/movies/eaaf0e3cae66de6ba04241b5e928253d-1266847704.iflv?e=1278401131&s=13f7ec33746823f5ee68afc12aedbba9

А на хосте такая -
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://video-4-15.rutube.ru/s5-05/vol25/movies/eaaf0e3cae66de6ba04241b5e928253d-1266847704.iflv?e=1278401247&s=1e208304abb4745d44ecf2774a889974


Так что тут дело не в хостинге.
Я не знаю механизм формирования xml сервером RuTube, могу только предположить, что он смотрит IP-адрес, и если он localhost, то дает верную ссылку, а если нет, то "левую".Хотя все и не так может быть.

(Отредактировано автором: 06 Июля, 2010 - 09:35:32)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB