PHP: прочитайте html-файл и получите доступ к переменной JS

Допустим, у меня есть общедоступная HTML-страница в Интернете со следующим содержанием:

<html>
<head>
<script>
var variableA = {
name: "A"};
variableA.id = 1;
</script>
</head>
<body>
...
</body>
</html>

Есть ли способ получить значение переменной variableA с php?

Что-то вроде этого:

$html = file_get_contents($myUrl);
$variableA = magicMethodIamLookingFor("variableA");
print_r($variableA);

С этим результатом:

Array(
"name" => "A",
"id" => 1
)

Я мог бы сделать это только с помощью регулярных выражений и json_decode (похоже как Как получить переменную Javascript со страницы HTML?) но проблема в том, что это не просто один JSON, но есть также переменные изменения, такие как variableA.id = 1;

0

Решение

Примечание. При использовании простых сценариев PHP доступ к JS-переменным невозможен.

Интересное требование. Ниже идет решение. Рассмотрим случай, когда имя переменной передается в URL. Пусть имя страницы будет «index.php». URL для просмотра выглядит следующим образом: localhost / index.php? VarName = variableA, где varName — это параметр запроса, который принимает имя переменной в качестве значения. Мы также можем передавать значения через запятую, немного подправляя код. Но это не считается сейчас.

Изложение шагов ниже

  1. Получите содержимое url.php и поместите его в скрытый div index.php
  2. Под захваченным контентом вызовите функцию Ajax с именем var & значение var как param.
  3. На странице ajax сохраните имя / значение в некоторой БД или файле.
  4. После вызова ajax есть еще DOM, где мы напечатаем имя / значение & удалить запись из базы данных или файла после отображения того же.
    Примечание: основной код находится в JS — см. Функцию getVarWithValue (переменная).

    <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
*/
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector