Очистить значения из тега JavaScript в зависимости от переменной внутри - PullRequest
1 голос
/ 15 марта 2019

Я пишу PHP-скрипт для получения значений переменных javascript (географических координат), которые можно найти внутри одного тега <script>,

<script>
....
myFirstVariableValue = 58.922;
mySecondVariableValue = -12.179;
....
myLastVariableValue = 45.425;
....
</script>

Мне не нравится идея получить весь HTML (он огромен) и использовать регулярное выражение для каждой из моих переменных на всем содержимом страницы, поэтому я подумал использовать xpath, чтобы найти правильный тег сценария (там их много и много) а потом получим переменные.

preg_match("myFirstVariableValue\ =\ (-?\d+.\d+)/",$HTML,$matches);
preg_match("mySecondVariableValue\ =\ (-?\d+.\d+)/",$HTML,$matches);
...
preg_match("myLastVariableValue\ =\ (-?\d+.\d+)/",$HTML,$matches);

Итак, я хотел бы найти с помощью запроса xpath правильный тег сценария, а затем запустить регулярные выражения только для содержимого тега сценария.

Проблема в запросе xpath: возможно ли сделать что-то подобное?

1 Ответ

1 голос
/ 15 марта 2019

После множества попыток я наконец смог найти правильный запрос, и он даже довольно прост.

Сначала я получаю правильный скрипт, используя содержит в текстовом содержимом скрипта.

$script = $xpath->query("//script/text()[contains(.,'myFirstVariableValue')]");

После этого я могу использовать переменную $script, чтобы ограничить область действия регулярных выражений

preg_match("myFirstVariableValue\ =\ (-?\d+.\d+)/",$script->item(0)->textContent,$matches);
preg_match("mySecondVariableValue\ =\ (-?\d+.\d+)/",$script->item(0)->textContent,$matches);
...
preg_match("myLastVariableValue\ =\ (-?\d+.\d+)/",$script->item(0)->textContent,$matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...