2014-09-04 43 views
0

我有一個CSV文件,每列有1列和1個代碼。對於每一個代碼,我必須創建一個URL並從URL中提取HTML信息:從文件中排列具有多個值的數組

$lines = file('sku.csv'); 
    echo '<FORM method="post" action="process.php">'; 

    foreach ($lines as $line) { 
    echo '<input type="hidden" autocomplete="off" value="'.$line.'" name="search-field" id="header-search-field">'; 
    } 
    echo '<button type="submit">Search</button></FORM>'; 

process.php

require ("simple_html_dom.php"); 

foreach($_POST as $var){ 
    $html = file_get_html("http://www.example.com/$var.html"); 
    $result = $html->find('table[id=item_specification]'); 
    echo $result[0]; 

} 

代碼就像這樣:

B0302773
B0323322
B0344576
B0360996

的主要問題是,它僅示出了最後的碼的結果(在此情況下B0360996),而不是爲每個人,並且當表[ID = item_specification]沒有發現,它掛起。爲什麼?

回答

1

您需要使用HTML陣列格式爲您輸入的名字:

name="search-field[]" 

否則所有你做的是提交表單與許多輸入每個具有相同的名稱,所以只有最後一個一個將被認可。

這一定會解決您的第一個問題。至於掛起問題,您需要在日誌中進行調試,或者打開一個關於file_get_html功能的單獨問題。

編輯

在你處理腳本,那麼你可以遍歷特定領域陣列,而不是整個POST陣列還可以保存不需要的字段:

foreach($_POST['search-field'] as $var){} 
0

您正在關閉窗體,這是錯誤的循環。它應該是這樣的。

$lines = file('sku.csv'); 
echo '<FORM method="post" action="process.php">'; 

foreach ($lines as $line) { 
echo '<input type="hidden" autocomplete="off" value="'.$line.'" name="search-field" id="header-search-field">'; 
} 
echo '<button type="submit">Search</button></FORM>'; 
+0

我很抱歉,我沒有在循環中關閉表單,只是在粘貼代碼時出現錯誤。我要修改我的問題。 – 2014-09-04 08:59:30