0

测试用例场景 - 用户单击以下两个链接之一:2012/102012/10/15

我需要知道链接中是否指定了 DAY。我已经从我的 URL 中删除了链接的其余部分(上面除外),我是否正在将值传递给 AJAX 请求以更改存档页面上的日期。

我可以在 JS 或 PHP 中执行此操作 - 检查正则表达式是否是查看/\d{4}\/\d{2}\/\d{2}/日期是否指定的唯一方法?

4

4 回答 4

5

如果你总是得到这种格式,你也可以这样做:2012/10 或 2012/10/15

if( str.split("/").length == 3 ) { }

但是没有任何保证,它将是数字。如果你想确定它们是数字,你确实需要那种正则表达式来匹配字符串。

于 2013-07-02T19:48:52.660 回答
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);
}
?>
于 2013-07-02T19:56:39.390 回答
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() 一样)。

于 2013-07-06T16:58:05.953 回答
0

我个人会使用正则表达式,这是测试这类事情的好方法。或者,您可以split/implode将字符串放在 上/,您将拥有一个由 3 个字符串组成的数组(希望如此),然后您可以对其进行测试。如果我以后要使用它,我可能会使用这种技术。

于 2013-07-02T19:50:25.293 回答