0
这里是我的问题,我试着抓住日期和更改日期格式从2表中的特殊字符。它成功了。 但1表中的日期返回值为0000-00-00 00:00:00,另一个表成功。下面是代码,表格和输出。另一个数据日期值为空时,当抓取html
表1
<TABLE class="tab1" border="1" cellpadding="0" cellspacing="0"
summary="">
<TR>
<TH align=left colspan=2 bgcolor=#0066CC><H1> Start RIP Job</H1>
</TH>
</TR>
<TR>
<TH align=left> Send Date:
</TH>
<TD class="td1" align=left> 1/9/2017 1:15 PM
</TD>
</TR>
<TR>
<TH align=left> RIP Start Date and Time:
</TH>
<TD class="td1" align=left> 13:21:22 09/01/2017
</TD>
</TR>
<TR>
<TH align=left> RIP End Date and Time:
</TH>
<TD class="td1" align=left> 13:21:33 09/01/2017
</TD>
</TR>
<TR>
<TH align=left> RIP Duration:
</TH>
<TD class="td1" align=left> 11 seconds
</TD>
</TR>
<TR>
<TH align=left colspan=2 bgcolor=#0066CC><H1> End RIP Job</H1>
</TH>
</TR>
</TABLE>
表2
<TABLE class="tab1" border="1" cellpadding="0" cellspacing="0"
summary="">
<TR>
<TH align=left colspan=2 bgcolor=#0066CC><H1> Start RIP Job</H1>
</TH>
</TR>
<TR>
<TH align=left> Printer:
</TH>
<TD class="td1" align=left> RunJiang Flora 3204P
</TD>
</TR>
<TR>
<TH align=left> Send Date:
</TH>
<TD class="td1" align=left> 9/29/2017 10:09 PM
</TD>
</TR>
<TR>
<TH align=left> RIP Start Date and Time:
</TH>
<TD class="td1" align=left> 22:09:49 29/09/2017
</TD>
</TR>
<TR>
<TH align=left> RIP End Date and Time:
</TH>
<TD class="td1" align=left> 22:10:13 29/09/2017
</TD>
</TR>
<TR>
<TH align=left> RIP Duration:
</TH>
<TD class="td1" align=left> 24 seconds
</TD>
</TR>
<TR>
<TH align=left colspan=2 bgcolor=#0066CC><H1> End RIP Job</H1>
</TH>
</TR>
</TABLE>
CODE:
$source=file_get_contents("C://xampp/htdocs/Champion/machine-logs/LogPrinting04/nulldate.HTML");
$dom = new DOMDocument();
$dom->loadHTML($source);
// print_r($dom);
$xp = new DOMXPath($dom);
$textList = $xp->query("//table[//th[contains(text(),'')]]");
foreach ($textList as $text) {
$enddate = $xp->evaluate(
"string(descendant::tr[th[contains(text(),'RIP End Date and Time') or contains(text(),'Output End Date And Time')]]/td/text())",
$text);
$date = preg_replace("/[^0-9a-zA-Z \/:\-]/", "", $enddate);
$xtime = strtotime($date);
$tes = date("Y-m-d H:i:s",$xtime);
echo "enddate=".$tes.PHP_EOL;
}
OUTPUT:
表1:2017年9月1日13点21分33秒
表2:0000-00-00 00:00:00
你可以给任何解决方案,我该怎么做.. –
报价:“m/d/y或dmy格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线(/),则假定为美国m/d/y;” http://php.net/manual/en/function.strtotime.php – spencer7593
是的,应该是2017-01-09,不是2017-09-01 ..日期是错误的.. –