PHP / Querypath获取Javascript变量的值

时间:2013-01-18 19:16:19

标签: php html-parsing querypath

我正在尝试使用QueryPath传递HTML。我想在HTML中获取Javascript变量的值。像这样:

<script type="text/javascript">

        var base_url = "http://www.exampleurl.com/";
        var room_id = "357"; //I want to get the value of room_id
        var selected_room_button = "";

</script>

我想得到Javascript变量* room_id *的值 357 我怎样才能做到这一点?

即使不使用QueryPath,是否还有其他HTML解析器可以让我进行这种解析?

1 个答案:

答案 0 :(得分:4)

您可以使用正则表达式。此代码将返回示例中的房间ID。

<?php

$html = '
<script type="text/javascript">
    var base_url = "http://www.exampleurl.com/";
    var room_id = "357"; //I want to get the value of room_id
    var selected_room_button = ""; 
</script>';

$pattern = '/var room_id = "(.*)";/';
preg_match($pattern, $html, $matches);
$room_id = $matches[1];

但是没有通用的解决方案,因为变量可能已定义两次,或已在不同的范围内定义。

如果您不需要在row_id旁边提取其他内容,我认为没有理由使用HTML解析器。这只会减慢事情的速度。还请期待HTML解析器不是Javascript解析器! HTML解析器仅用于在<script> </script>标记之间提取未解析的内容 - 作为字符串。您需要再次使用正则表达式来提取row_id。