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>

357であるJavascript変数*room_id*の値を取得したいのですが、 どうすればこれを達成できますか?

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];

しかし、変数が 2 回定義されているか、異なるスコープで定義されている可能性があるため、一般的な解決策はありません。

row_id 以外のコンテンツを抽出する必要がない場合、HTML パーサーを使用する理由はありません。それは物事を遅くするだけです。また、HTML パーサーが Javascript パーサーではないことを期待してください。<script> </script>HTML パーサーは、タグ間の未解析のコンテンツを文字列として抽出するために使用されます。row_id を抽出するには、正規表現が再び必要になります。

于 2013-01-18T19:47:39.173 に答える