Хранить блоки текста в переменной PHP - PullRequest
1 голос
/ 22 июля 2011

У меня есть куча javascript-файлов, которые мне нужно проанализировать через PHP (я не хочу передавать их в браузер; я хочу сделать это полностью в бэкэнде), и все они содержат объявление переменной, например (фактическое содержимое одного из файлов js):

var x = '<html><div class="foo">blocks of text</div></html>';

По сути, все они заключают html в одинарные кавычки, и переменная всегда одна и та же (в данном случае x). Какой лучший способ извлечь все из одинарных кавычек в переменную PHP?

edit: в конце каждого сгенерированного файла есть дополнительный код (кстати, я не генерирую файлы, это сделано сторонней организацией):

if(navigator.userAgent.indexOf('MSIE 7')>-1){ x = x.replace(/([^>])<(\/?)span/g,'$1<wbr/><$2span'); }; jsonp_PageLoaded(1,0,x);

Ответы [ 4 ]

0 голосов
/ 23 июля 2011

Понял это сам.Вот код, использующий PHP:

$str = file_get_contents('file.js');
$pattern = "/\'([^\']*)\';/";
preg_match($pattern, $str, $matches);
print_r($matches);
0 голосов
/ 22 июля 2011

Возможно, он не самый быстрый, но как насчет чтения всего файла и использования

$varDeclaration = 'var x = ';
$pos = strpos($str,$varDeclaration);
$start = $pos + strlen($varDeclaration);
$end = strpos($str,"\n",$start);

$string = substr($str, $start+1, ($end-$start)-3); // +1 and -3 is to account for the single quotes that wrap the string and the ending semi colon
0 голосов
/ 22 июля 2011

Регулярные выражения. Решение, которое дает TJMonk15, может сработать, но регулярное выражение - это «реальный» способ извлечения частей произвольных строковых данных, подобных этому.

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

0 голосов
/ 22 июля 2011

Если можете, попробуйте переписать их в объекты JavaScript.

var object = {
  x: "<html>etc.</html>",
  y: "etc."
}

Это можно легко проанализировать с помощью json_decode.

...