-2

我想从以下 java 脚本部分中提取节点值。java 脚本包含在 html 头部分中。我想用 PHP html dom 或正则表达式来做。

<script>  
     *****************************************
     ********************************** 
     document.loginform.action ="../Login1.action";
 document.loginform.submit();
 }
    </script>

我想获取document.loginform.action ="I want to get this text"之间的文本;两个引号。请帮我。

4

3 回答 3

1

要完全按照您的要求进行操作,您可以使用正则表达式和每个脚本元素的 text 属性,但是我认为您不会发现它非常健壮或实用。

window.onload = function() {
  var script, scripts = document.scripts;
  var re = /document\.loginform\.action =/;
  var text;

  for (var i=0, iLen=scripts.length; i<iLen; i++) {
    script = scripts[i];

    if (re.test(script.text)) {
      text = script.text.match(/document\.loginform\.action ="[^"]+/)[0];
      alert(text.split('"')[1]);
    } 
  }
}
于 2012-05-29T05:42:08.580 回答
1

您可以尝试这样做:<script>从 HTML 中获取节点,如下所示:

x=document.getElementsByTagName("script");
str = x[0].innerHTML;

这将为您提供<scrip> and </script>节点之间的整个脚本内容。拆分str'

var arr = str.split(":");

这将为您提供一个包含所有行的数组。现在将数组中的所有document.loginform字符串分组并继续进行。您需要检查一个包含“动作”的字符串,这将帮助您获得更准确的结果。

希望这会帮助你。

于 2012-05-29T05:37:05.923 回答
-1

您甚至没有搜索或使用人们建议您的内容,这是寻求人们帮助的糟糕方式。这是使用正则表达式的解决方案。

<?php
$html = <<<EOD
....
<script>  
     *****************************************
     ********************************** 
     document.loginform.action ="../Login1.action";
 document.loginform.submit();
 }
    </script>
.....
EOD;
$match = preg_match('/document\.loginform\.action\s*=\s*"([^"]+)";/isU', $html, $result);
echo $match[1];
?>

您可能希望使用 DOM 解析器来实现相同的目的,您需要在此处查看:http ://docs.php.net/manual/en/domdocument.loadhtml.php以获取更多信息。

于 2012-05-29T06:13:51.740 回答