Извлечь определенную часть большого блока HTML-кода, хранящегося в переменной PHP - PullRequest
1 голос
/ 08 ноября 2011

У меня есть встраиваемый код слайда, как показано ниже. весь этот HTML хранится в переменной $embed_code.

Я печатаю этот код на PHP. Теперь я хочу кусок кода из этой строки HTML.

Код написан ниже. Я хочу код только между тегами <object>.

$embed_code = '
 <div style="width:425px" id="__ss_617490"><strong style="display:block;
 margin:12px 0 4px"><a href="http://www.slideshare.net/al.capone/funny-beer-babies-
 enginnering-rev-2-presentation" title="Funny beer babies enginnering rev. 
 2">Funny beer babies enginnering rev. 2</a></strong>


<object id="__sse617490" 
 width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com
/swf/ssplayer2.swf?doc=becoming-an-engineer-1222340701618958-9&stripped_title=funny-  
 beer-babies-enginnering-rev-2-presentation&userName=al.capone" /><param  
 name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/>
 <embed name="__sse617490" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=
  becoming-an-engineer-1222340701618958-9&stripped_title=funny-beer-babies-enginnering-
  rev-2-presentation& userName=al.capone" type="application/x-shockwave-flash" 
   allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> 
  </object>




 <div style="padding:5px 0  12px">View more<a href="http://www.slideshare.net
  /"> presentations</a> from <a href="http://www.slideshare.net/al.capone">
  al.capone</a>.</div></div>';

Теперь я хочу, чтобы эта строка была только из <object id="....." to "</embed> </object>, весь этот HTML-код генерируется динамически, поэтому дайте мне какое-нибудь представление об этом.

Как я могу это сделать? Есть ли какая-либо функция PHP, которая может извлечь html между любым тегом?

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Используйте классы DOMDocument.

$dom = new DomdDocument ();
$dom -> loadHtml ($embed_code);
$htmlObject = $dom -> getElementById ('__sse617490'); // Returns a DomElement

http://www.php.net/dom

1 голос
/ 08 ноября 2011

Мне нравится использовать PHPQuery для анализа и извлечения данных из HTML с помощью PHP. Для обхода кода используются простые селекторы стиля CSS jQuerys.

Так было бы:

require('phpQuery/phpQuery.php');
$doc = phpQuery::newDocumentHTML($embed_code);
$div = pq('div#__ss_617490'); // select a DIV with the specified ID
var_dump($div->attr('style')); //To get the style attribute
var_dump($div->html()); // To get the inner html

// now to get the object tag like you desire.
$object_tag = pq('object');

// only get the first object
$object_tag = pq('object:first');
0 голосов
/ 08 ноября 2011

Вы можете просто использовать регулярное выражение для анализа и извлечения его:

$embed_code = "blah blah <object ...>and other code here</object> blah blah";

$matches = array();
preg_match('#<object(\s*[^>])?>(.*)</object>#iU', $embed_code, $matches);

// $matches[0] = "<object ...>and other code here</object>"
// $matches[1] = "and other code here"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...