php - 太多 Ifs 来检查变量确实包含有效的 4 位数年份
问题描述
以下 if 语句有效,但它很难看,我感觉可以使用 preg_match REGEX 实现相同的效果。如何?
基本上我还不知道如何在正则表达式中将位数限制为 4。一旦满足 4 位数字标准,我想将 true 的返回限制在 2019 年到 2025 年之间。
示例正则表达式:
/* digits only, no dots */
function is_digits($element) {
return !preg_match ("/[^0-9]/", $element);
}
示例 PHP
// SET $TARGET_YEAR TO current year in [yyyy] format.
// Is set, Is not empty, Is numeric, Is 4 digits long?
if(isset($_GET["year"]) && !empty($_GET["year"]) && is_numeric($_GET["year"]) && strlen($_GET["year"]) == 4) {
// WE HAVE A REAL YEAR.
// SET $TARGET_YEAR TO target year in [yyyy] format.
self::$TARGET_YEAR = $_GET["year"];
} else {
// WE DON'T HAVE A REAL YEAR.
// SET $TARGET_YEAR TO current year in [yyyy] format.
self::$TARGET_YEAR = date('Y');
}
解决方案
推荐阅读
- django - Django 相关对象参考 remove(obj, bulk=False)
- java - 对象数组没有合适的构造函数
- ethereum - web3 ABI 无法在以太坊主网上获得合约所有权
- node.js - 配置数据库时,连接详细信息不可用 Digital Ocean
- hangfire - 如何在 ASP.NET CORE Web API 中配置 Hangfire 以使用 postgresql 作为存储数据库?
- python - 如何从Django中另一个下拉列表的选定值填充下拉列表
- leaflet - 使用自定义控件在传单地图上绘制不同的对象
- tableau-api - 如何将 Tableau Redshift 连接从 dev 环境更改为 qa 环境?
- r - 如何在 R 中转换这些数据?
- c# - C#如何读/写外部控制台的IO