對模糊標題感到抱歉。我使用simple_html_dom從下面指定的設置中提取一些數據。我想要做的是將數據插入一個2D數組(?),其中第一個字段的值是訂閱的名稱,其餘的是與該訂閱相關的數據。使用foreach循環從數組創建2D陣列
<td><a href="/subname/index.jsp">SubName</a></td> <!-- This is the name of the subscription -->
<td>Comment regarding the subscription</td><!-- Comment -->
<td><strong>0,-</strong></td><!-- Monthly fee -->
<td>0,49</td><!-- Price per minute -->
<td>0,49</td><!-- Price per SMS -->
<td>1,99</td><!-- Price per MMS -->
我到目前爲止,工作正常,但它將所有的值放入一個常規數組中。 我已經嘗試閱讀數組,並嘗試不同的解決方案,但我只是似乎無法包裹我的頭。
我想是這樣的:
陣列 ( [SubName1] =>數組 ( [0] =>註釋 [1] =>每月費用 [2] =>價格,每分鐘 [3] =>單價SMS [4] =>單價MMS ) [SubName2] =>數組 (..)
這是我的代碼:
function getData($uri) {
try {
$html = file_get_html($uri); // Fetch source code
$data = array();
foreach($html->find('td') as $td) { // Fetch all <td>-elements
foreach($td->find('a') as $a) { // Fetch all <a>-elements to remove links
$data[] = $a->innertext; // This returns the names of the subscriptions
}
foreach($td->find('strong') as $strong) { // Fetch all <strong>-elements to remove bold text
$data[] = $strong->innertext;
}
if(!preg_match('/<strong>/', $td->innertext) && !preg_match('/<a/', $td->innertext)) { // Skip all <td>-elements that contains <strong> and <a>, since we already have them
$data[] = $td->innertext;
}
}
/* Logic for database insertion goes here */
unset($data); // Deletes array
$html->clear(); // Clear to free up memory
unset($html);
} catch (Exception $e) {
echo 'Failed to fetch prices from'.$uri.'.<br />'.$e->getMessage();
}
}
在此先感謝。
是HTML文檔XHTML嗎?如果是這樣,你可以使用PHP DOM擴展來解析代碼並構建一個數組。請參閱:http://php.net/manual/en/book.dom.php – Camsoft 2010-02-03 11:31:01