在PHP变量中存储文本块

时间:2011-07-22 18:02:12

标签: php regex domdocument

我需要通过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);

4 个答案:

答案 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);