使用DOMDOCUMENT提取JavaScript值

Using DOMDOCUMENT to pull JavaScript values

本文关键字:JavaScript 提取 DOMDOCUMENT 使用      更新时间:2023-09-26

是否可以使用DOM文档提取javascript值?

<script type="text/javascript">
    var datePickerDate = "October 14, 2014";
  $(document).ready(function(){
    // meetings datepicker
    $("#datepicker").datepicker({
      showOn: 'button',
      buttonImage: '/images/calendar.gif',
      buttonImageOnly: true,
      onSelect: function(dateText, inst) {
        populate_meetings(dateText, 0)
      },
      dateFormat: 'd MM yy',
      minDate: new Date(2009, 0, 1), maxDate: 0
    });
    $('#datepicker').datepicker('option', 'defaultDate', new Date("October 14, 2014"));
    $('#datepicker').val("October 14, 2014");
  });
    //call on page load to get meetings and date
    populate_meetings("October 14, 2014", 15515);
</script>

这是html中的输出,所以我知道它在那里。。。我想读取日期,所以拉var datePickerDate=,它返回2014年10月14日

--再澄清一点——

我用domdocument抓取一个网站并抓取html,就像一样

$html = file_get_contents($url);
//set the main page html code that will be resused
$dom = new DOMDocument();
// load html
@$dom->loadHTML($html);

html中有一些javascript,其中包含日期……我想获取该日期并将其粘贴在可验证的中

populate meetings只需在下拉框中填充日期

您不能使用PHP执行javascript(显然),所以最好的方法可能是使用正则表达式获取JS变量。以下是如何使用DOMXPath:的示例

# create a new XPath object that will operate on the DOM that you've initialised
# in your code
$xp = new DOMXPath($dom);
# find all the script elements in the page
$scripts = $xp->query("//script");
foreach ($scripts as $s) {
    # see if there are any matches for var datePickerDate in the script node's contents
    if (preg_match('#var datePickerDate = "(.*?)"#', $s->nodeValue, $matches)) {
        # the date itself (captured in brackets) is in $matches[1]
        print_r($matches[1]);
    }
}

输出:

October 14, 2014