Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Получить ссылку из iframe (https://javascript.ru/forum/server/46380-poluchit-ssylku-iz-iframe.html)

ureech 07.04.2014 22:35

Получить ссылку из iframe
 
Здравствуйте. Имею ссылку на .xml документ. В нём есть iframe( ссылка на видео)
Получить сам iframe с документа могу. Имеет такой вид
<iframe width="720" height="405" src="//ххх" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>

Подскажите как вытащить src="//ххх".

danik.js 08.04.2014 00:33

var tmpElement = document.createElement('div');
tmpElement.innerHTML = '<тут твой код html>';
var src = tmp.getElementsByTagName('iframe')[0].src;

danik.js 08.04.2014 00:38

Хотя в идеале должно быть так:
var html = '<iframe width="720" height="405" src="//ххх" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>';

var doc = (new DOMParser()).parseFromString(html, 'text/html');

var src = doc.querySelector('iframe').getAttribute('src');

alert(src);


К сожалению не работает в старых браузерах.

ureech 08.04.2014 00:51

Большое спасибо, полдела сделанно. В alert вывело //xxx. А как мне её в переменную вывести, что бы использовать дальше можно было.echo не получается. Как то обратится к ф-ции надо, или как. Простите за тупость. И ещё, дело в том ,что самого документа у меня как бы нет, всё в динамике. Есть переменная которая обращается к тегу <html>, (в котором прписан код ифрейма),в xml документе. Можно поместить в "var html" эту переменную? Если да, то как правильно прописать.

danik.js 08.04.2014 01:16

Цитата:

Сообщение от ureech
Есть переменная которая обращается к тегу <html>,

Что значит "переменная обращается"? Как это выглядет? Показывый как ты работаешь с xml, как код фрейма извлекаешь и тд.

ureech 08.04.2014 01:27

$abc = 'http://rutube.ru/api/oembed/?url='.$url.'/&format=xml';
$xml = simplexml_load_file($abc);
$abc = (string) $xml->html;
В $abc у меня получактся этот iframe. echo $abc открывает плеер с роликом.
Сам документ можно посмотреть по ссылке:http://rutube.ru/api/oembed/?url=htt...cf/&format=xml

danik.js 08.04.2014 03:06

Ааа... дык PHP?
Ну тогда можешь DOMDocument заюзать:
<?php
$abc = '<iframe width="720" height="405" src="//xxx" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>';
$dom = new DOMDocument();
$dom->loadHTML($abc);
$iframe = $dom->getElementsByTagName('iframe')->item(0);
$src = $iframe->getAttribute('src');
echo $src;


Хотя решение тяжеловесное. Если нужна скорость, или хочется избавиться от лишней зависимости (расширение DOMDocument), можешь регулярку найти и заюзать. Хотя регулярки не советуют юзать для HTML.

ureech 08.04.2014 03:38

Вот сейчас как раз и курю маны по регулярке, но подумал может ф-циями красивей получится. Спасибо за помощь и совет пойду вникать.


Часовой пояс GMT +3, время: 23:33.