我需要通过PHP解析一堆javascript文件(我不想将它们推送到浏览器;我想在后端完全执行此操作),并且它们都包含变量声明,例如(其中一个js文件的实际内容):
var x = '<html><div class="foo">blocks of text</div></html>';
基本上它们都将html包含在单引号内,并且变量始终相同(在本例中为x)。将单引号内的所有内容提取到PHP变量中的最佳方法是什么?
编辑:在生成的每个文件的末尾都有额外的代码(顺便说一句,我没有生成文件,它是由第三方完成的):
if(navigator.userAgent.indexOf('MSIE 7')>-1){ x = x.replace(/([^>])<(\/?)span/g,'$1<wbr/><$2span'); }; jsonp_PageLoaded(1,0,x);
答案 0 :(得分:0)
如果可以,请尝试将它们重写为javascript对象。
var object = {
x: "<html>etc.</html>",
y: "etc."
}
这可以通过json_decode轻松解析。
答案 1 :(得分:0)
它可能不是最快的,但是如何阅读整个文件并使用
$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
答案 2 :(得分:0)
正则表达式。 TJMonk15提供的解决方案可能有用,但正则表达式是提取任意字符串数据部分的“真实”方式。
每个程序员都有时间学习正则表达式。花费很长时间才能获得基础知识,这绝对是将初学者与经验丰富的人分开的事情之一。
答案 3 :(得分:0)
我自己想出来。这是使用PHP的代码:
$str = file_get_contents('file.js');
$pattern = "/\'([^\']*)\';/";
preg_match($pattern, $str, $matches);
print_r($matches);