2013-01-07 21 views
-2
$site=file_get_contents("$link"); 

$price='#<span class=price>(.*?)<\/span>#si'; 

preg_match_all($price,$site,$pricelist); 

echo $pricelist[0]."<br>"; 

echo $pricelist[1]."<br>"; 

echo $pricelist[2]."<br>"; 

大家好,我在PHP是新的。我正在嘗試從另一個網站獲取價目表。我試圖寫這段代碼,它說「注意:數組到字符串轉換」。我怎樣才能取到列表這樣的價格:我新的PHP和我的代碼給出聲明

<tr> 
    <td><?php echo $pricelist[0] ?></td> 
    <td><?php echo $pricelist[1] ?></td> 
    <td><?php echo $pricelist[2] ?></td> 
    <td><?php echo $pricelist[3] ?></td> 
    <td><?php echo $pricelist[3] ?></td> 
</tr> 

而且也是這個代碼工作:

<?php 

$site=file_get_contents("$link"); 

$price='#<span class=price>(.*?)<\/span>#si'; 

preg_match_all($price,$site,$pricelist); 

for ($a=0; $a<5; $a++){ 

echo $pricelist[1][$a].'<br>'; } 

?> 
+3

**不要使用正則表達式來解析HTML **。您無法可靠地使用正則表達式解析HTML。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php.html。 –

+0

因爲你得到了多維數組,所以它在for循環中有什麼問題 – vodich

+1

注意你在非工作代碼中使用'$ pricelist [0]',在*中使用'$ pricelist [1] [$ a]''工作*代碼? – Sammitch

回答

0

$pricelist[0](或任何索引就此而言)顯然是一個陣列。這可以通過您發佈的代碼進行確認。所以你需要確定你想如何輸出該數組。一個簡單的解決方案是使用print_r

<tr> 
    <td><?php print_r($pricelist[0]); ?></td> 
    <td><?php print_r($pricelist[1]); ?></td> 
    <td><?php print_r($pricelist[2]); ?></td> 
    <td><?php print_r($pricelist[3]); ?></td> 
    <td><?php print_r($pricelist[3]); ?></td> 
</tr> 
0

我猜你想this--

$site=file_get_contents("$link"); 

$price='#<span class=price>(.*?)<\/span>#si'; 

preg_match_all($price,$site,$pricelist); 

echo "<tr>"; 

for ($a=0; $a<5; $a++){ 

echo "<td>".$pricelist[1][$a].'</td>'; 
} 
echo "</tr>";