2011-12-16 1 views
0

Пожалуйста, помогите!Strip YouTube Код для вставки в URL только

мне нужно раздеться следующий код так, чтобы он использует только «значение» часть

$<object width="360" height="226"><param name="movie" value="http://www.youtube.com/v/IkZuQ-aTIs0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IkZuQ-aTIs0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="360" height="226"></embed></object> 

Так что в этом случае было бы раздеть его до http://www.youtube.com/v/IkZuQ-aTIs0

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

Пожалуйста, помогите: D

+0

Решили вы это еще? – Ascherer

ответ

0

Лучший способ заключается в использовании DOM парсер.

http://php.net/manual/en/class.domdocument.php

$doc = new DOMDocument(); 
$doc->loadHTML('<object width="360" height="226"><param name="movie" value="http://www.youtube.com/v/IkZuQ-aTIs0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IkZuQ-aTIs0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="360" height="226"></embed></object>'); 
+0

Переменная VideoEmbed - это то, что хранит код YouTube Embed, который я пытаюсь отключить. Как я могу добавить код, который вы все предоставили в этот раздел, если он должен добавить его? Извините за сумбур, я с трудом отображения кода здесь правильно я нуб View Video «; ? \t \t \t \t \t \t \t}> – cpcdev

+0

я сделал новый пост, который объясняет мою проблему лучше - http://stackoverflow.com/questions/8537550/rewrite-youtube-url – cpcdev

1
<?php 

$string = '<object width="360" height="226"><param name="movie" value="http://www.youtube.com/v/IkZuQ-aTIs0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IkZuQ-aTIs0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="360" height="226"></embed></object>'; 

preg_match_all('#http://www.youtube.com/v/([\w\-]+){11}#is', $string, $matches); 

print_r(array_unique($matches[0])); 

?> 
+0

Нет, не разобрать HTML с RegEx , http://stackoverflow.com/a/1732454/362536 – Brad

+0

@ Брад, я знаю. Я не разбираюсь в HTML, просто извлекаю URL. В этом случае DOMDocument является излишним. –

+0

Возможно, но если бы это был я, я бы выбрал стандартное решение, если вы не смогли гарантировать формат ввода. DOMDocument не будет самым быстрым решением любыми способами, но если он будет использоваться правильно, вы сможете более надежно пересечь документ. – Brad

0
$string = '<object width="360" height="226"><param name="movie" value="http://www.youtube.com/v/IkZuQ-aTIs0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/IkZuQ-aTIs0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="360" height="226"></embed></object>'; 

$start = strpos($string, 'value="'); 
$string = substr($string, $start + 7); 
$end = strpos($string, '" '); 
$string = substr($string, 0, $end); 

echo $string; 

немного сложнее, чем webartos, но будет захватывать любое значение, а не просто ссылку YouTube

+0

'#value =" (. *?) "# Is' :) –

+0

Спасибо всем за быструю обратную связь! Я думаю, что мне нужно быть более конкретным ... в основном данные для этого хранятся в формате XML, и я называю это следующим образом: [code] – cpcdev

+0

Не разбирайте HTML таким образом. Что происходит, когда вы попадаете в какой-то сломанный HTML? Пусть стандартные классы, созданные для такого рода вещей, делают это, а не изобретают колесо. – Brad