У меня большой 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 внутри функции) и т. Д.