简单的html DOM如何在特定div内的<source />中获取src?

时间:2014-02-17 13:11:29

标签: php html css simple-html-dom

我有一个页面,我需要获取.mp4文件,它位于特定的

以下是我需要提取.mp4文件链接的页面源。

<div class="videoPlayer">
            <script type="text/javascript">
                var sVideoErrorMessage = "<p style='margin-top:170px; text-align:center; font-size:16pt; font-weight:bold;'>You need the latest Flash player to see this video.<br><br><a rel='nofollow' href='http://www.macromedia.com/go/getflashplayer' style='text-align:center; font-size:16pt; font-weight:bold;'>Click here to get Adobe Flash player</a></p>";
                var bIsIpad         = false;

                function videoPoster() {
                                        var style_padding = (490 - 345.66666666667) / 2;

                    var playerInnerHTML = '<div id="posterHolder">';
                    playerInnerHTML += '    <div id="html5_vid">';
                    playerInnerHTML += '        <img src="http://img03.domainname.com/_thumbs/0000430/0430303/0430303_007i.jpg" width="582" alt="" id="vidImgPoster" /><a id="playBtn" href="javascript:;" onclick="startPlayer()"></a>';
                    playerInnerHTML += '        <span id="lb">loading movie...</span>';
                    playerInnerHTML += '    </div>';
                    playerInnerHTML += '</div>';
                    document.getElementById('_flv_player').innerHTML  = playerInnerHTML;

                    document.getElementById("html5_vid").innerHTML = "<video x-webkit-airplay='allow' id='html5_video' style='margin-top:" + style_padding + "px;' width='610' preload='auto' height='345.66666666667' controls onerror='cantPlayVideo()' " +
                            "<source src='http://videos.mp4.domainname.com/_videos_t4vn23s9jc5498tgj49icfj4678/0000430/_mp4/0430303.mp4?47aac1f74dca44b0626f9a59c221d75c6c0ad5a608ab8ed18241691fb9f72b19848d7f8a5b6c792e9b4beb72db7731038690fb39d4b4c5083c32fdda32c63370a178cc090ea9ba2c3b7f77d9722898ac9bea1210f3b15ab2265133db172d7a529598ea44320dfa43a7e3f99c5f17c54e468f66964f57e7e019813aae9eef404e5c7db09de772602b19b8800e9f63fa37dcee4c164e71a1da7d2b598e117f15caf7ef9e5700' type='video/mp4'>" +
                            "<p style='margin-top:170px; text-align:center; font-size:16pt; font-weight:bold;'>You need the latest Flash player to see this video.<br><br><a rel='nofollow' href='http://www.macromedia.com/go/getflashplayer' style='text-align:center; font-size:16pt; font-weight:bold;'>Click here to get Adobe Flash player</a></p>" +
                            '</video><div id="vidPoster" class="hidden"><img src="http://img03.domainname.com/_thumbs/0000430/0430303/0430303_007i.jpg" width="584" alt="" id="vidImgPoster" style="top:'+ style_padding +'px" /><a id="playBtn" href="javascript:;" onclick="startPlayer()"></a><span id="lb">loading movie...</span></div>';
                    var vid     = document.getElementsByTagName('video')[0];

                    if (vid != null && 'msie' != $.browser.name) {
                        vid.play();
                        vid.pause();
                    }
                                    }
            </script>
                </div>

所以从这些代码中我需要提取这个

http://videos.mp4.domainname.com/_videos_t4vn23s9jc5498tgj49icfj4678/0000430/_mp4/0430303.mp4

这是在src内部,也许你可以注意到.mp4后面是一堆带有代码的问号,我不需要它也只需要直接链接到.mp4文件。

是否可以提取它?

我已经在我的localhost文件夹中设置了simplehtmldom,并尝试了一些教程中的一些东西,但是它正在工作,但我不知道如何提取它。

我需要这个在我的php页面上。

1 个答案:

答案 0 :(得分:1)

这是可以使用正则表达式的时间之一:

if(!preg_match("/<source src='([^?']*)/", $str, $m)) die('no match!');
$src = $m[1];

原因是它不是真正的HTML,它是javascript。没有html解析器可以做得很好。