Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用simple_html_dom.php抓取javascript数据_Php_Regex_External - Fatal编程技术网

使用simple_html_dom.php抓取javascript数据

使用simple_html_dom.php抓取javascript数据,php,regex,external,Php,Regex,External,我只是通过使用simple_html_dom.php从外部页面中删除一个脚本标记得到这个字符串 var secs = 0; var lastp = 0; var newInstance = newObjce("xxx").setup( "more":[{.....}], "sources": [ {"file":"url1","label":"360p","default":"true"}, {"file":"url2","label":"480p"}, {"file":"url3"

我只是通过使用simple_html_dom.php从外部页面中删除一个脚本标记得到这个字符串

var secs = 0; 
var lastp = 0;
var newInstance = newObjce("xxx").setup(    
"more":[{.....}], 
"sources": [
{"file":"url1","label":"360p","default":"true"},
{"file":"url2","label":"480p"},
{"file":"url3","label":"720p"},
{"file":"url4","label":"1080p HD"}
], 
"morestuff":[{......}])
如何获取“sources”[…this data…]和asign in php变量之间的数据? 将var_转储到此始终返回的字符串对象
使用json_encode对我不起作用,因为在apply和make var_dump返回always string对象之后,这就是为什么我认为regexp可以帮助我

我找到了一个解决方案,我发现这个页面可以在线生成regexp ,如果将来有人需要,请留下函数来解决我的问题

$re1='.*?'; # Non-greedy match on filler
$re2='("sources".*?\\[.*?\\])'; # Double Quote String 1
if ($c=preg_match_all ("/".$re1.$re2."/is", $string, $matches))
{
  $string1=$matches[1][0];
  print ($string1);
 }

你想要做的事情可以用正则表达式来完成,但它可能不是最好的选择。例如,您可以在
之后的第一个括号“[”和开始括号之后的下一个结束括号之后的停止匹配之间进行匹配。请参阅

然而,如果在您预期的范围内有一个紧括号(例如,在字符串内),您就有可能遇到问题。您最好只使用适当的解析器解析JSON。JSON_decode是一个成熟的本机PHP实现。还有其他实现允许将JSON作为流读取,这对于大型数据集来说非常有效


简而言之,在这个用例中,正则表达式可能不是最好的选择。

谢谢,我试图用json_decode完成这个任务,但是来自simple_html_dom的数据是string,我无法在这个字符串上进行json_编码,因为json_string在这个数组上输入了大量数据([0]=>(我需要搜索的所有代码都嵌套在这里),[1]=>(这里有更多必要的代码);如果你有一个关于如何使用json_解码的好例子,我真的非常感谢你阅读这个例子,它可能不是json(只是Javascript,有区别)。我更新了正则表达式以查找第一个结束括号“]”在第一个开始括号后的一行的最开始处。这可能使您更接近您需要去的地方。请注意标记“gsm”。如果没有适当的解析器,您的问题就没有好的解决方案。