使用 simple_html_dom.php 抓取 javascript 数据
scraping javascript data with simple_html_dom.php
我只是从带有 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...] 之间的数据并在 php 变量中赋值?
使 var_dump 成为这个总是 returning 的字符串对象
使用 json_encode 对我不起作用,因为在应用并使 var_dump return 总是字符串对象之后,这就是为什么我认为正则表达式可以帮助我
我找到了一个解决方案,我发现这个页面可以在线生成正则表达式
http://txt2re.com/index-php.php3,把解决我问题的功能留在这里,如果以后有人需要的话
$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);
}
您希望完成的工作可以使用正则表达式完成,但这可能不是最佳选择。例如,您可以在 sources
之后的第一个括号“[”和左括号之后的下一个闭括号之后的停止匹配之间进行匹配。参见 https://regex101.com/r/mVVEGp/1。
但是,如果在您预期之前出现一个右括号(例如,在字符串中),您就有遇到麻烦的风险。使用适当的解析器解析 JSON 可能会更好。 json_decode 是一个成熟的原生 PHP 实现。还有其他实现允许将 JSON 作为流读取,这适用于大型数据集。
简而言之,正则表达式可能不是此用例的最佳选择。
我只是从带有 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...] 之间的数据并在 php 变量中赋值? 使 var_dump 成为这个总是 returning 的字符串对象 使用 json_encode 对我不起作用,因为在应用并使 var_dump return 总是字符串对象之后,这就是为什么我认为正则表达式可以帮助我
我找到了一个解决方案,我发现这个页面可以在线生成正则表达式 http://txt2re.com/index-php.php3,把解决我问题的功能留在这里,如果以后有人需要的话
$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);
}
您希望完成的工作可以使用正则表达式完成,但这可能不是最佳选择。例如,您可以在 sources
之后的第一个括号“[”和左括号之后的下一个闭括号之后的停止匹配之间进行匹配。参见 https://regex101.com/r/mVVEGp/1。
但是,如果在您预期之前出现一个右括号(例如,在字符串中),您就有遇到麻烦的风险。使用适当的解析器解析 JSON 可能会更好。 json_decode 是一个成熟的原生 PHP 实现。还有其他实现允许将 JSON 作为流读取,这适用于大型数据集。
简而言之,正则表达式可能不是此用例的最佳选择。