我正在处理一个代码,它给了我一个URL的输出源。 然后当我有这个输出时,我解析一个javascript文本。 这是我正在解析的文本:http://pastebin.com/7yZ9RqJa
这是我的代码:
new Context().getApplicationContext().getExternalCacheDir().getAbsolutePath()
这给我的结果如下:
<?PHP
$url = 'http://www.sportsdirect.com/dunlop-mens-canvas-low-top-trainers-246046?colcode=24604622';
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile($url);
$xpath = new DOMXpath($doc);
$DataVariants = $xpath->query('//span[@class="ImgButWrap"]/@data-variants')->item(0)->nodeValue;
$jsonStart = strpos($DataVariants, '[');
$jsonEnd = strrpos($DataVariants, ']');
$collections = json_decode(substr($DataVariants, $jsonStart, $jsonEnd - $jsonStart + 1));
foreach ($collections as $item) {
$ColVarId = $item->ColVarId;
$SizeNames = $item->SizeVariants->SizeName;
echo "$ColVarId - $SizeNames ,<br>";
}
?>
所以使用这段代码,我习惯了所有的24604603 - ,
24604684 - ,
24604640 - ,
24604609 - ,
24604682 - ,
24604686 - ,
24604681 - ,
24604689 - ,
24604602 - ,
24604679 - ,
24604680 - ,
24604622 - ,
24604685 - ,
24604683 - ,
24604621 - ,
24604677 - ,
24604688 - ,
。
除此之外,我希望获得特定ColVarId
的所有SizeName
。
例如,我想获取ColVarId
= 24604603的所有SizeName
ID。
是否有可能以及我如何做到这一点?
提前致谢!
答案 0 :(得分:0)
您可以修改循环以将大小名称读取到下一个:
foreach ($collections as $item) {
$ColVarId = $item->ColVarId;
$SizeNames = [];
foreach ($item->SizeVariants as $size) {
$SizeNames[] = $size->SizeName;
}
$names = implode(',', $SizeNames);
echo "$ColVarId - $names ,<br>";
}
另外我想在将 $ size-&gt; SizeName 值添加到 $ SizeNames 数组之前,如果它是真实/非空的大小,请更好地测试。
答案 1 :(得分:0)
SizeVariants也是一个数组,因此您无法访问该数组的SizeName属性,您必须指定要获取SizeName的该数组的哪个元素。
$SizeNames = $item->SizeVariants
foreach ($SizeNamesas $sn)
{
echo $sn->SizeName;
}
这是您访问SizeName的方式。 如果您想访问特定ColVarId的所有SizeNames,您可以在foreach内部检查。
$myColVarId = 24604603;
foreach ($collections as $item) {
$ColVarId = $item->ColVarId;
if($ColVarId == $myColVarId){
$SizeNames = $item->SizeVariants
foreach ($SizeNamesas $sn)
{
echo "$ColVarId".'-'.$sn->SizeName;
}
}
else
continue; //this item does not have our ColVarId, so we skip.
}
$SizeNames = $item->SizeVariants->SizeName;
echo "$ColVarId - $SizeNames ,<br>";
}
代码未经过测试。