我有一个HTML页面的网址,显示很少的产品(笔,T恤等)和库存(仓库中的产品)。
我需要获取(窃取)与产品相对应的特定SKU_CODE的股票,因为我通过电子邮件与他们交谈并且他们没有.CSV / .TXT或Excel文件与股票。 因此,我需要从动态URL加载HTML并使用preg_match_all解析它以获取外部库存,然后将其显示在我的网站页面上,与特定产品相对应。
类似于从银行网站获取当前货币平价,当您需要将其放在您的网站上时,如果您手动编码。
所以这就是我的代码,它只能运行一半。我设法在页面上找到SKU_CODE,但是当我查找股票值时,如果我执行print_r,它会显示Array()然后我无法保持该数组的任何值。我将在下面发布我的代码。
$ code ='AP731463-10'; $ code_minimized = explode(“ - ”,$ code);
$url_to_get = 'http://www.andapresent.hu/index.php?term_idk_list=4776829&term_idk_l=&filt=&qs='.$code_minimized[0].'';
function findinside($start, $end, $string) {
preg_match_all('/' . preg_quote($start, '/') . '([^\.)]+)'. preg_quote($end, '/').'/i', $string, $m);
return $m[1];
}
$array_lines = file($url_to_get);
//echo($array_lines[1654]);
$cont = 0;
$found_match = 0;
while(isset($array_lines[$cont])){
//daca inca nu s-a gasit codul cautat, cauta-l intre <b> </b>
//if code we're looking for is not yet found, search between <b> </b>
if($found_match==0){
$out = findinside('<b>','</b>', $array_lines[$cont]);
}
//o data ce s-a gasit, flag set ca sa nu-l mai caute inca o data
//once found, set flag $found_match so it will not look for it next time
if($out[0]==$code && $found_match==0){
$found_match = 1;
echo "Found match : ".$code." = ".$out[0]."<br>";
}
//daca e flag-ul gasit e setat, cauta next info (stock-ul) pana il gaseste in $array_lines[$cont]
//if flag is already set, look for next info (the stock value of the product)
if($found_match==1){
$out_2 = findinside('<td class="szoveg_k" align="center">','</td>', $array_lines[$cont]);
echo $out_2;
}
$cont++;
}
答案 0 :(得分:0)
您正在逐行阅读HTML页面并一次搜索一行。但是,如果您要查找的开放<td>
和结束</td>
出现在不同的行上,该怎么办?我认为这就是你的函数没有返回正确结果的原因。
但是,考虑到你的任务,我认为使用XPpath搜索股票价值会更合适。看看这个tutorial,看看它是否有帮助!