如何解析包含javascript代码的html

时间:2012-07-29 17:03:43

标签: php javascript html parsing html-parsing

  

可能重复:
  Server side browser that can execute JavaScript
  Execute javascript in PHP

如何解析包含JavaScript代码的HTML,如果可能,最好使用PHP脚本。

举个例子:

<a href="javascript:link(10, true);">link</a>
应该用JavaScript函数返回的适当值替换

,例如

<a href="http://www.example.com">link</a>

一个更复杂的例子是一个保存的facebook html页面,里面堆满了大量的javascript代码。

概括为: 使用html + javascript

返回页面的DOM

3 个答案:

答案 0 :(得分:1)

你可以给这个链接一个ID。并不是说这个解决方案是javascript,jQuery。

所以给链接一个Id或类。

$('.link').each(function() {
    var functionName = 'link';
    var start = $(this).attr('href');
    remove = start.replace('javascript:', ''), 
        get = remove.replace(new RegExp('^'+functionName+'\(((.+\,?)+)\)\;?', 'g'), function(a, b, c) {
        return c.replace(/[()']/g,'')
    }), args = get.split(",");

    //read settings
    var firstArgument = args[0];
    $(this).attr('href', firstArgument)
});​

请注意,这只是一个例子。

用法:

​<a class="link" href="javascript:link('http://facebook.com')"​>Hi</a>​​​​​​​​​​​​​​​​​​

这会产生实际的链接http://facebook.com

以这种方式添加新参数很难,但并不是很专业。 但这应该做你想要的,我只是不知道你的链接函数实际上是什么,所以我没有用布尔值添加参数。当然,这可能会变得更加复杂,你可以编写一个可以做到这一点的函数,但我只是为你的速度写了这个。

查看example

答案 1 :(得分:0)

你做不到。单击时,javascript: URI只调用该函数并让它执行任何操作(可能包括在某处导航);他们不期望或使用返回值。在许多用例中,该功能可能根本不会导致任何导航。

答案 2 :(得分:0)

DomDocument可用于解析PHP中的HTML,包括JS:http://php.net/manual/en/class.domdocument.php

您只需回显cURL或wget(或您使用的任何内容)的输出而不转义HTML字符,就可以使用HTML“呈现”JS。对于外部JS,您需要构建一个爬虫程序,它将抓取DomDocument script标记并获取适当的URL并将其加载到可访问的位置,除非您直接从其服务器使用它我认为他们不会对此感到高兴。

编辑:我的一些评论后的新答案是:没有