Simple HTML DOMライブラリは、Webページからタイムスタンプを抽出するために使用されます。strtotime
次に、抽出されたタイムスタンプをMySQLタイムスタンプに変換するために使用されます。
問題:がstrtotime()
有効なタイムスタンプで使用されると、NULL
が返されます(を参照2:
)。ただし、2番目の例でSimple HTML DOMが使用されていない場合、すべてが正しく機能します。
何が起こっているのですか、そしてこれをどのように修正できますか?
出力:
1:2013-03-03, 12:06PM
2:
3:1970-01-01 00:00:00
var_dump($ time)
string(25) "2013-03-03, 12:06PM"
PHP
include_once(path('app') . 'libraries/simple_html_dom.php');
// Convert to HTML DOM object
$html = new simple_html_dom();
$html_raw = '<p class="postinginfo">Posted: <date>2013-03-03, 12:06PM EST</date></p>';
$html->load($html_raw);
// Extract timestamp
$time = $html->find('.postinginfo', 0);
$pattern = '/Posted: (.*?) (.).T/s';
$matches = '';
preg_match($pattern, $time, $matches);
$time = $matches[1];
echo '1:' . $time . '<br>';
echo '2:' . strtotime($time) . '<br>';
echo '3:' . date("Y-m-d H:i:s", strtotime($time));
2番目の例
PHP(動作、単純なHTML DOMなし)
// Extract posting timestamp
$time = 'Posted: 2013-03-03, 12:06PM EST';
$pattern = '/Posted: (.*?) (.).T/s';
$matches = '';
preg_match($pattern, $time, $matches);
$time = $matches[1];
echo '1:' . $time . '<br>';
echo '2:' . strtotime($time) . '<br>';
echo '3:' . date("Y-m-d H:i:s", strtotime($time));
出力(正しい)
1:2013-03-03, 12:06PM
2:1362312360
3:2013-03-03 12:06:00
var_dump($ time)
string(19) "2013-03-03, 12:06PM"