测试用例场景 - 用户单击以下两个链接之一:2012/10
或2012/10/15
。
我需要知道链接中是否指定了 DAY。我已经从我的 URL 中删除了链接的其余部分(上面除外),我是否正在将值传递给 AJAX 请求以更改存档页面上的日期。
我可以在 JS 或 PHP 中执行此操作 - 检查正则表达式是否是查看/\d{4}\/\d{2}\/\d{2}/
日期是否指定的唯一方法?
测试用例场景 - 用户单击以下两个链接之一:2012/10
或2012/10/15
。
我需要知道链接中是否指定了 DAY。我已经从我的 URL 中删除了链接的其余部分(上面除外),我是否正在将值传递给 AJAX 请求以更改存档页面上的日期。
我可以在 JS 或 PHP 中执行此操作 - 检查正则表达式是否是查看/\d{4}\/\d{2}\/\d{2}/
日期是否指定的唯一方法?
如果你总是得到这种格式,你也可以这样做:2012/10 或 2012/10/15
if( str.split("/").length == 3 ) { }
但是没有任何保证,它将是数字。如果你想确定它们是数字,你确实需要那种正则表达式来匹配字符串。
您可以通过“/”分隔符分解日期,然后计算项目:
$str = "2012/10";
$str2 = "2012/10/5";
echo count(explode("/", $str)); // 2
echo count(explode("/", $str2)); // 3
或者,把它变成一个函数:
<?php
function getDateParts($date) {
$date = explode("/", $date);
$y = !empty($date[0]) ? $date[0] : date("Y");
$m = !empty($date[1]) ? $date[1] : date("m");
$d = !empty($date[2]) ? $date[2] : date("d");
return array($y, $m, $d);
}
?>
最简单最快的方法是检查字符串的长度!其实你需要区分:yyyy/mm/dd(10个字符长)和yyyy/mm(7个字符)。
if(strlen($str) > 7) {
// Contains day
}
else {
// Does not contain day
}
即使您不使用前导零,这也将起作用!实际上:
2013/7/6 -> 8 characters (> 7 -> success)
2013/7 -> 6 characters (< 7 -> success)
这当然也是最快的代码,因为它不需要 PHP 遍历整个字符串(就像使用 explode() 一样)。
我个人会使用正则表达式,这是测试这类事情的好方法。或者,您可以split/implode
将字符串放在 上/
,您将拥有一个由 3 个字符串组成的数组(希望如此),然后您可以对其进行测试。如果我以后要使用它,我可能会使用这种技术。