0

我正在尝试使用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 解析器可以让我进行这种解析?

4

1 回答 1

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。

于 2013-01-18T19:47:39.173 回答