У меня большой HTML-файл, содержащий много контента. Я хочу получить переменную JavaScript, названную 'a'
например, из всего файла.
Пример: (удалено много фактического содержимого)
<html> <head> <script> var a = [{'a': 1, 'b': 2}]; </script> </head> <body> .... </body> </html>
Из вышеизложенного следует:
[{'a': 1, 'b': 2}]
preg_match('#var a = (.*?);\s*$#m', $html, $matches); echo $matches[1];
Объяснение:
var a =
;
, любое количество пробелов \s*
, то конец строки $
m
будет пытаться согласовать каждую строку независимо, без нее, $
будет просто соответствовать концу строки, которая будет немного бесполезной Любое количество пробелов существует только там, где у вас есть пробелы после определения, нет другой причины (например, человеческая ошибка). Если вы уверены, что этого не произойдет, вы можете удалить \s*
.
Обратите внимание, что это не заменяет полноразмерный парсер. Вам нужно будет внести изменения, если a
определено более чем в одной строке, если a
определено более одного раза (подумайте о сфере, вы можете иметь var a
в глобальной области, затем var a
внутри функции) и т. Д.