2010-01-15 42 views
1

我使用curl獲取HTML文件後,使用DOMDocument解析一些數據。該代碼看起來像這樣從DOMDocument元素使用strtotime轉換日期

 

$dom = new DOMDocument(); 
@$dom->loadHTML($content); 
$tables = $dom->getElementsByTagName('table'); 
$rows = $tables->item($tblNum)->getElementsByTagName('tr'); 

foreach ($rows as $row) { 
    $cols = $row->getElementsByTagName('td'); 
    $var = $cols->item(1)->nodeValue; // The problem is here 
} 
 

使用的strtotime我不能轉換$var的時間戳。我不知道爲什麼,我知道$cols->item(1)->nodeValue返回了我想要的值,我甚至嘗試過將其嵌入另一個變量中,但我仍然無法使用strtotime將其轉換爲時間戳。我也直接

strtotime('11 Jan 2010');

測試值並沒有返回一個時間戳,所以,我應該怎麼辦?

+0

向我們展示它返回重現該問題。您要轉換的日期。 – kjagiello 2010-01-15 10:01:12

+0

nodeValue返回2010年1月11日 – amree 2010-01-15 10:02:20

+0

然後使用'var_dump()'來檢查它的類型。它看起來不是一個字符串。 – kjagiello 2010-01-15 10:03:38

回答

0

我不能使用PHP 5.3.1/WINXP

$content = '<html><head><title>...</title></head><body> 
    <table> 
    <tr><td>X</td><td>12 Jan 2010</td></tr> 
    </table> 
</body></html>'; 
$tblNum = 0; 

$dom = new DOMDocument(); 
@$dom->loadHTML($content); 
$tables = $dom->getElementsByTagName('table'); 
$rows = $tables->item($tblNum)->getElementsByTagName('tr'); 

foreach ($rows as $row) { 
    $cols = $row->getElementsByTagName('td'); 
    $var = $cols->item(1)->nodeValue; 
    echo date('Y-m-d H:i:s', strtotime($var)), "\n"; 
} 

打印2010-01-12 00:00:00

+0

我在Linux上使用PHP 5.2.10,我將在Windows後面測試代碼 – amree 2010-01-15 10:19:03

+0

我得到了和PHP 5.2.12-pl0-gentoo – VolkerK 2010-01-15 11:12:40

+0

相同的結果Apprently,之前有一個 的值,可以試試重新問題在日期前添加 ,所以,最後,我只是使用$ content = str_replace(' ','',$ content);因爲$ var = str_replace(' ','',$ var)不起作用。謝謝 ! – amree 2010-01-16 04:35:31