让我们说我在互联网上有一个公共的html页面,其中包含以下内容:
<html>
<head>
<script>
var variableA = {
name: "A"
};
variableA.id = 1;
</script>
</head>
<body>
...
</body>
</html>
是否可以通过php获取变量variableA
的值?
类似的东西:
$html = file_get_contents($myUrl);
$variableA = magicMethodIamLookingFor("variableA");
print_r($variableA);
结果如下:
Array(
"name" => "A",
"id" => 1
)
我可以使用正则表达式和json_decode
(类似于How to get Javascript variable from an HTML page?)来完成此操作,但问题是,它不仅是单个json,而且还存在诸如variableA.id = 1;
之类的变量更改。
答案 0 :(得分:0)
注意:使用普通的PHP脚本,将无法访问JS变量。
有趣的要求。下面是一个解决方案。让我们考虑一下在URL中传递变量名的情况。让页面名称为“ index.php”。浏览URL如下所示:localhost / index.php?varName = variableA,其中varName是将变量名作为值的查询参数。我们还可以通过稍微调整代码来传递逗号分隔的值。但这现在还没有考虑。
概述以下步骤
在ajax调用之后,还有一些DOM,我们将在其中打印名称/值并在显示相同名称后将其从DB或File中删除。 注意:主要代码在JS中-请参见getVarWithValue(variable)函数。
<html>
<body>
<?php
$varName = (isset($_GET['varName']) && trim($_GET['varName']) != "") ? $_GET['varName'] : 'variableA';
?>
<div style="display:none">
<?php
$html = file_get_contents('./url.php');
echo $html;
?>
<script>
//THIS IS THE CORE FUNCTION WHICH GETS THE VAR NAME & VALUE
function getVarWithValue(variable) {
var param = '';
for (var name in this) {
keyValue = [];
if (variable == name ) return param += name+'='+JSON.stringify(eval(name));
}
return false;
}
var http = new XMLHttpRequest();
http.open("POST", "setVariableValue.php", false); // 3rd argument makes sure that the call is NOT async.
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
document.getElementById("varValue").innerHTML = http.responseText.toString();
}
};
http.send(getVarWithValue( '<?php echo $varName ?>' ));
</script>
</div>
<?php
//$varValue = getValuefromDB(); Get the saved value from DB or file
echo "The variable value of $varName is: ".$varValue;
// Write code to remove the row from DB or file
?>
</body>
url.php (我们需要从中捕获变量名称和值的页面)
<html>
<head>
<script>
var variableA = { name: "A" };
variableA.id = 1;
var variableB = ["Stack", "Overflow"]
</script>
</head>
<body>
Some Text
</body>
</html>
setVariableValue.php
<?php
/**
* Write code for saving var name & value to DB or file
*/