测试用例场景 - 用户点击以下两个链接之一:2012/10
或2012/10/15
。
我需要知道是否在链接中指定了DAY。我已经从我的URL中剥离了链接的其余部分(上面除外),我是否将值传递给AJAX请求以更改存档页面上的日期。
我可以在JS或PHP中执行此操作 - 检查正则表达式/\d{4}\/\d{2}\/\d{2}/
是查看是否指定日期的唯一方法吗?
答案 0 :(得分:5)
如果您始终使用以下格式,也可以执行此操作:2012/10或2012/10/15
if( str.split("/").length == 3 ) { }
但没有保证,这将是数字。如果你想确定它们是数字,你需要那种正则表达式来匹配字符串。
答案 1 :(得分:1)
您可以通过“/”分隔符分解日期,然后计算项目:
$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);
}
?>
答案 2 :(得分:0)
我个人会使用正则表达式,这是测试此类事情的好方法。或者,您可以split/implode
/
上的字符串,您将拥有一个包含3个字符串(希望如此)的数组,然后您可以对其进行测试。如果我以后要用它,我可能会使用这种技术。
答案 3 :(得分:0)
最简单快捷的方法是检查字符串的长度! 实际上,您需要区分: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()那样)。