我开发了一个网页,因为我需要将日期格式从22/01/2010更改为2010-01-22我使用了以下函数,但我得到了一个警告,因为“已弃用:函数ereg()在c:\wamp\www\testpage.php的第33行中已被弃用”。有没有办法隐藏这个错误,或者有没有其他方法来改变日期格式?请帮我解决这个问题。提前谢谢。
$datedue = $_REQUEST['txtJoiningdate'];
        $r = ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $datedue, $redgs);
        $billdate=$redgs[3]."-".$redgs[2]."-".$redgs[1];发布于 2010-01-10 22:48:03
您正在使用不推荐使用的函数。请改用preg_match。另外,对preg_match的调用应该在if测试中。
<?php
$datedue = '22/01/2010';
if(preg_match('@([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})@', $datedue, $redgs)) {
    $billdate=$redgs[3]."-".$redgs[2]."-".$redgs[1];    
    echo $billdate; // prints  2010-01-22 
}
?>发布于 2010-01-10 22:56:40
为什么不使用php自带的strtotime、date和str_replace函数在一行简单的代码中完成这个任务呢?
通过这种方式,您可以使用date提供的许多选项轻松地将日期格式更改为您想要的任何格式。
echo date('Y-m-d',strtotime(str_replace("/",".","22/01/2010")));输出2010-01-22
所用函数的文档:
发布于 2010-01-10 22:46:34
这应该可以做到:
list($d, $m, $y) = explode('/', $datedue);
$billdate = date('Y-m-d', mktime(0,0,0,$m,$d,$y);或者,这可以没有Gumbo建议的日期函数:
list($d, $m, $y) = explode('/', $datedue);
$billdate = "$y-$m-$d"; 不过,如果您怀疑将来需要更改格式,我建议您使用date。对于这样的简单拆分,不需要使用正则表达式。在这种情况下,爆炸会快得多。
从PHP5.3.0起,ereg_正则表达式函数将被弃用,并将在PHP6中删除。对于正则表达式,请使用preg_函数。
关于隐藏错误;在开发时永远不要隐藏通知,因为它们可以帮助您构建更好的代码。如果没有这个通知,当服务器更新到PHP6时,你会很高兴地使用ereg,你的应用程序也会崩溃。但是,你可以用error_reporting()来控制显示的错误数量。当你的网站上线时,关闭error_reporting可能是个好主意。
顺便说一句,如果你觉得有帮助,就开始接受一些答案。
https://stackoverflow.com/questions/2037319
复制相似问题