[L-php]validator表单验证类PHP版本

Fat Free Framework:轻量PHP框架实战指南 PHP框架是Web开发的基础技术选型,其核心价值在于平衡开发效率与运行性能。Fat Free Framework(F3)作为一款仅70KB的极简PHP框架,不依赖Composer、无命名空间、零配置即可运行,本质是回归PHP原生语义的设计哲学。它通过全局单例Base类、正则驱动路由、PDO直连封装等机制,在保持对SQL和HTTP完全掌控的前提下,显著降低学习成本与资源开销。该框架特别适用于老旧服务器维护、IoT控制页、内部工具快速搭建及教学演示等场景,是Laravel/Symfony之外的重要轻量选项。本文 阅读详情

<?php
/*****************
名称:validator For PHP v1.0.0
日期:2006-12-7
作者:西楼冷月
网址:www.xilou.net | www.chinaCMS.org
描述:数据检验类,用在表单验证上
规则:无
*****************/
/*php自身的检测函数
*bool is_numeric ( mixed var)
*bool is_bool ( mixed var)
*bool is_null ( mixed var)
*bool is_float ( mixed var)
*bool is_int ( mixed var)
*bool is_string ( mixed var)
*bool is_object ( mixed var)
*bool is_array ( mixed var)
*bool is_scalar ( mixed var)
*string gettype ( mixed var)
*/

/*新添加的检测函数
isDate()     日期检查
isTime()     时间检查
isInt()      整数检查
isNum()      数字检查
isEmail()    邮件检查
isUrl()      url检查
isPost()     邮政编码检查
isPhone()    电话号码检查
isMobile()   移动电话检查
isLen()      长度检查
isIdCard()   身份证检查
isEnglish() 英文检查
isGB2312()   简体中文检查
isIP()       IP检查
isQQ()       QQ检查
checkFileType() 文件后缀名检查
*/
class Validator{

function Validator(){
   //echo "test";
}

    /*
*方法:bool isDate($str,$format="")
*作用:检验日期的合法性
*说明:默认的合法日期格式是以"-"分割的"年-月-日"
*         当参数$format设置格式时则按照这个格式检验
*例子:isDate("2006-12-1");isDate("2006-12-1","Y-m-d h:i:s")
*/
function isDate($str,$format=""){
   if($format==""){
    $str=explode("-",$str);
    return @checkdate($str[1],$str[2],$str[0]);
   }else{
    //按规定的格式检验
            $unixTime=strtotime($str);//转为时间戳
            $checkDate= date($format,$unixTime);
            if($checkDate==$str){return true;}else{return false;}
   }
}
   
//时间检查
function isTime($str,$format=""){
   if(!$format){
    $str=explode(":",$str);
    if(count($str)!=3) return false;
    for($i=0;$i<=2;$i++){
     //echo $str[$i];
     if(!@preg_match("/^[0-9]{1,2}$/",$str[$i])) return false;
     //数字要小于或等于59
     if($str[$i]>59) return false;
     //小时要<24
     if($str[0]>=24) return false;
    }
   }else{
    //按规定的格式检验
            $unixTime=strtotime($str);//转为时间戳
            $checkDate=date($format,$unixTime);
            if($checkDate!=$str) return false;
   }
   return true;
}
//验证表单数据是否是整数(用is_int()验证不了的)
//前面可以加上可选的符号(- 或者 +)
function isInt($str){
     $pattern="/^[-|+]?(([0-9]{1})|([1-9]{1}[0-9]+))$/";
   if(@preg_match($pattern,$str)){return true;}
   return false;
}
//验证是否由数字组成,is_numeric()验证包括整数和浮点数
function isNum($str,$pattern=""){
   if($pattern){
    return @preg_match($pattern,$str);
   }else{
    $pattern="/^/d+$/";
    return @preg_match($pattern,$str);
   }
}

function isFloat(){}
//email检测
function isEmail($str){
   $pattern="/^[_0-9a-z]+@[0-9a-z-]+(/.[0-9a-z-]+)*/.[a-z]+$/i";
   if(@preg_match($pattern,$str)){return true;}
   return false;
}
    //URL检测,只检查http形式
function isUrl($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    $pattern="/^http:////[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"])*$/";
    if(@preg_match($pattern,$str)){return true;}
   }
   return false;
}

    //邮政编码,中国邮政编码是6位数字组成
function isPost($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    if(@preg_match("/^/d{6}$/",$str)){return true;}
   }
   return false;
}
//电话号码 区号-号码 或 号码 或区号号码
//0751-8120917||07518120917||8120917
function isPhone($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    $pattern="/^((/(/d{3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}$/";
    if(@preg_match($pattern,$str)){return true;}
   }
   return false;
}
//手机号码区号-号码 或 号码 或区号号码
function isMobile($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    $pattern="/^((/(/d{3}/))|(/d{3}/-))?13/d{9}$/";
    if(@preg_match($pattern,$str)){return true;}
   }
   return false;
}
//字符串长度是否在l1和l2之间,即l1<$str<l2
function isLen($str,$l1,$l2){
   if(strlen($str)>$l1&&strlen($str)<$l2){return true;}
   return false;
}
//身份证号码
//可以验证15和18位的身份证号码
function isIdCard($str){
   $pro=array("11","12","13","14","15","21","22","23","31","32","33",
   "34","35","36","37","41","42","43","44","45","46","50","51","52",
   "53","54","61","62","63","64","65","71","81","82","91"
   );//前两位的省级代码
   if(!in_array(substr($str,0,2),$pro))return false;//验证前两位
   if(strlen($str)==15){
    if(!@preg_match("/^/d+$/",$str))return false;
    //检查年-月-日(年前面加19)
    return @checkdate(substr($str,8,2),substr($str,10,2),"19".substr($str,6,2));
   }
   if(strlen($str)==18){
    if(!@preg_match("/^/d+$/",substr($str,0,17)))return false;//前17位是否是数字
    //检查年-月-日
    if(!@checkdate(substr($str,10,2),substr($str,12,2),substr($str,6,4)))return false;
    //加权因子Wi=2^(i-1)(mod 11)计算得出
    $Wi_arr=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    //校验码对应值
    $VN_arr=array(1,0,'x',9,8,7,6,5,4,3,2);
    //计算校验码总值(计算前17位的,最后一位为校验码)
    for($i=0;$i<strlen($str)-1;$i++){
     $t+=substr($str,$i,1) * $Wi_arr[$i];
    }
    //得到校验码
    $VN=$VN_arr[($t % 11)];
    //判断最后一位的校验码
    if($VN==substr($str,-1)){return true;}else{return false;}
   }
   return false;
}
//字符串是否全部是英文
function isEnglish($str){
   $pattern="/^[a-z]+$/i";
   if(@preg_match($pattern,$str)){return true;}
   return false;
}
//是否是简体中文
function isGB2312($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    $pattern="/^[".chr(0xa1)."-".chr(0xff)."]+$/";
    if(preg_match($pattern,$str)){return true;}
   }
   return false;
}
//是否是繁体中文
function isBIG5(){}
//是否GBK
function isGBK(){}
//是否是ip
function isIP($str){
   $s=explode(".",$str);
   if(count($s)!=4) return false;
   foreach($s as $v){
    if(!is_numeric($v)) return false;
    //if(!is_int($v)) return false;
    //不用检查是否带小数,因为小数带小数点"."
    //正则检测是否存在192.168.01.02 以0开头的小数
    if(preg_match("/^0[0-9]+$/",$v)) return false;
    if($v<0 || $v>255) return false;
   }
   return false;
}
    //是否是QQ 5-9位
function isQQ($str,$pattern=""){
   if($pattern){
    if(@preg_match($pattern,$str)){return true;}
   }else{
    $pattern="/^[1-9]/d{4,8}$/";
    if(@preg_match($pattern,$str)){return true;}
   }
   return false;
}
//检查文件的扩展名是否符合,$filetype可以是字符串或数组,而且传递的数据要全部为小写
//使用1:checkFileType("gif|rar|jpeg|jpg","lsflkjs.jpeg") return true
//使用2:checkFileType(array("rar","bmp","gif"),"lsflkjs.jpeg") return false
function checkFileType($filetype,$file){
   $f=(is_array($filetype))?$filetype:explode("|",$filetype);
   $n=strrchr($file,'.');//截取字符串,找不到则返回""
        $n=(!$n)?"":strtolower(substr($n,1));
   //in_array(),是区分大小写的
   return in_array($n,$f);
}
//判断是否在字符串中出现某些字符
function isInStr($str1,$str2){}

//检查数据提交,有post,get两种方式,是否所有都不为空
//注意:检测不了多选项.没有使用trim()去掉首尾空格
function checkRequest($post_or_get,$emptyitems=""){
   if(!is_array($post_or_get)){return false;}
   if(count($post_or_get)==0){return false;}
   $items=explode("|",$emptyitems);
   foreach($post_or_get as $key=>$value){
    if($_REQUEST[$key]==""){
     if(in_array($key,$items)){continue;}else{return false;}
    }
   }
   return true;
}
//显示所有接收到的数据列表
function showRequest($_request,$leftnum,$post_or_get="/$_POST"){
   if(!$this->isInt($leftnum) || !$_request)return false;
   if(!is_array($_request)){echo $_request;return;}
   foreach($_request as $key=>$value){
    $str="/$".$key;
    if($leftnum>strlen($key)){
     for($i=0;$i<=$leftnum-strlen($key);$i++){$str.="&nbsp;";}
    }
    $str.="=&nbsp;&nbsp;".$post_or_get."['".$key."']";
    if(is_array($_REQUEST[$key])) $str.="&nbsp;&nbsp;<b>数组</b>";
    echo $str."/n";
   }
}

//每个类都带有一个o($info) 输出(output)函数
function o($info=""){
        $cssstyle="style=/"";
        $cssstyle.="font:bold 12px 150%,'Arial';border:1px solid #CC3366;";
        $cssstyle.="width:50%;color:#990066;padding:2px;/"";
        $str="/n<ul ".$cssstyle."><li>".$info."</li></ul>/n";
        echo $str;
}
//每个类都带有一个showInfo($info,$type) 输出函数
function showInfo($info,$type=0,$url=""){
   switch($type){
    case 0:$this->o($info);break;
    case 1:echo "<script>alert(".chr(34).str_replace("/"","///"",$info).chr(34).");</script>";break;
    case 2:
     if($url==""){$this->o("showInfo(/$info,/$type=0,/$url=/"/") 错误:需要/$url参数");break;}
       echo "<script>location.href='$url';</script>";break;
    case 3:echo "<script>history.go(-1);</script>";
    case 4:header("Location:$url");break;
    case 5:$this->showInfo($info,1);$this->showInfo("",3);
    case 6:$this->showInfo($info,1);$this->showInfo("",2,$url);
    default:$this->o($info);
   }
}
}
?>

Python字符串isalnum()方法原理与实战避坑指南 isalnum()是Python中用于判断字符串是否仅由字母和数字组成的内置方法,其底层基于Unicode字符分类标准(L*和N*类别),而非简单ASCII范围匹配。它支持全球主流文字系统(如希腊文、西里尔文、汉字拼音字符等),具备零依赖、C级性能与跨平台一致性等技术优势。相比正则表达式或isalpha()/isdigit()组合,isalnum()在表单校验、文件名清洗、API参数过滤等场景中兼具高安全性、高执行效率与天然国际化能力。本文深入解析其Unicode机制、常见误用陷阱及5类工程化应用模式。 阅读详情

相关推荐

PHP Swoft2 框架精华系列:Validator 校验器详解

本文深入讲解了 Swoft 2 框架中的 Validator 校验器,包括其基本概念、使用方法及高级技巧。跟随刘杰的技术博客「技术那些事」,全面掌握 Swoft 的数据校验机制,提高开发效率和代码质量。

技术那些事 989

PHP 自定义参数校验工具Validator

PHP服务端校验客户端请求传递的参数,做参数验证时有许多弊病。通过归纳整理,自定义了一个参数校验工具类Validator。

Gan_1314的博客 1642

validator:一个简单PHP验证器

JetFire PHP验证程序 一个受laravel形式启发的简单php验证程序,它要求进行验证和 。 安装 通过 composer require jetfirephp/validator 用法 \JetFire\Validator\Validator简单用法: require_once __DIR__ . '/vendor/autoload.php' ; $ response = \ JetFire \ Validator \ Validator :: isAlpha ( 'Peter Parker' ); // if not valid if (! $ response ){ // your code // ... } 如果要验证多个值,可以这样做: require_once __DIR__ . '/vendor/autoload.php' ; $ respon

Validation —— 一款 PHP 直观的数据验证器

目标只有 10 个字 - 规则结构即是数据结构

蛮吉是魁拔的博客 1926

Validator:PHP验证器

验证程序,PHP扩展 一个我喜欢的简单的验证器。 快速使用。 use xuweiqiang\validator\Validator; $rules = [ 'chnname' => [ 'format' => 'string', 'required' => true, 'maxLength' => 10, 'filter' => ['trim', 'filterSpace'], 'default' => '' ], 'birthday' => [ 'format' => 'dateTime', 'required' => false, 'layout' => 'Y-m-d', 'default' => null

validator:PHP简单好用的验证类库

#最佳 include 'src/validator.php'; $validator = new validator; $validator->rule('username', 'required') ->rule('username', array('minlength' => 4)) ->label('username', '用户名'); if ($validator->check()) { echo 'OK'; } else { var_dump($validator->getError()); die; }

Django Rest framework(drf)serializer中进行验证的几种方式

验证顺序由上至下 1、to_internal_value 通过重写to_internal_value方法来验证,也可以在这里对数据做一些处理: class FormSerializer(ModelSerializer): def to_internal_value(self, data): # 验证 logo_name = data.get('logo', None) if not logo_name: # to_interna

快下锅的粽子的博客 3848

PHP-Validation:一个简单的、可扩展的 PHP 验证库,支持过滤和验证任何输入数组以及生成客户端验证代码

验证库 一个简单的、可扩展的 PHP 验证库,支持过滤和验证任何输入数组以及生成客户端验证代码。 0.0 目录 介绍 例子 规则参考 运行测试 故障排除 变更日志 1.0 简介 该库提供了一种根据一组规则验证输入数组的简单方法。 输入可以来自 $_POST 或任何其他数据源。 每个字段都可以应用自己的标签、预过滤器和规则。 规则扩展了一个非常简单的界面,使添加自定义规则变得非常容易。 Validator 对象本身可以针对不同的数据集执行多次,这使得它对于处理动态数据非常有用。 此外,可以为客户端脚本生成验证规则。 目前仅提供 jQuery Validate,但可以轻松添加其他接口。 2.0 例子 use HybridLogic \ Validation \ Validator ; use HybridLogic \ Validation \ Rule ; $ validator =

php validator,实用的PHP验证器类Validator

Particle\Validator是一个小巧优雅的实用的PHP验证类库,提供了一个非常简洁的API。它无需依赖其他组件,提供友好的文档,并且有利于扩展。使用composer安装提供非常方便的composer安装:composer require particle/validator使用在使用之前请确保在项目中引入了 vendor/autoload.php 文件。...

weixin_28972665的博客 491

php-validator:php验证器

php验证器 提供通用验证功能。 它可以单独使用,也可以通过连接多个验证来使用。 验证者列表 验证人名称 描述 明矾验证器 确定字符串是否仅包含字母和数字。 数据类型验证器 确定值的类型。 通用验证器 确定数字是否大于或等于指定的数字。 GT验证器 确定它是否大于指定的数字。 LE验证器 确定它是否小于或等于指定的数字。 LT验证器 确定它是否小于指定的数字。 非空验证器 确定该值是否为空。 非空验证器 确定该值是否为空。 正则表达式验证器 用正则表达式判断。 长度验证器 确定字符串的长度。

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。在setup模式下,读入库、golden设计、有修改的设计,并指定一些option。对于简单的设计,通过GUI来做LEC也是可以的。

weixin_44606964的博客 918

php validator,如何优雅的使用 laravel 的 validator验证方法

web 开发过程中经常会需要进行参数验证,laravel 中我们常用 validator 或者 request 这两种方法来进行验证,但是这两种验证都不是很方便进行自定义提示信息,自定义验证规则,所以下面来介绍一种很方便的用法:新建抽象类namespace App\Http\Validators;use Validator;abstract class AbstractValidator{/***...

weixin_33469623的博客 550

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 351

php validator类,实用的PHP验证器类Validator

ParticleValidator是一个小巧优雅的实用的PHP验证类库,提供了一个非常简洁的API。它无需依赖其他组件,提供友好的文档,并且有利于扩展。使用composer安装提供非常方便的composer安装:composer require particle/validator使用在使用之前请确保在项目中引入了 vendor/autoload.php 文件。...

weixin_39650756的博客 295

AltiumDesigner相同模块复用操作

AltiumDesigner相同模块复用操作框选已布局好的A电路,作为复用模块创建Room同样的操作,框选C电路,然后也创建Room查看A电路的Chanel Offset显示设置复制Channel Offset查看B电路的Channel Offset复制A电路的Channel Offset到C电路Room格式的复制 框选已布局好的A电路,作为复用模块 创建Room 同样的操作,框选C电路,然后也创建Room 查看A电路的Chanel Offset 框选A模块的,然后点右下角的菜单——PCB——PCB

weixin_41947101的博客 5964

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1144

php validator,Laravel4中的Validator验证扩展用法详解

本文实例讲述了Laravel4中的Validator验证扩展用法。分享给大家供大家参考,具体如下:不管写接口还是写web页面,实质都是传入参数,然后进行业务逻辑,然后再输出具体内容。所以,对参数的验证是不可避免的一个环节,比如传过来的email是不是为空,是不是合法的email格式?laravel已经为phper想到简化这种逻辑的办法了。就是Validator。Validator的使用制造一个验证...

weixin_39798579的博客 303

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

在信息化时代,操作系统是数字世界的基石,而终端命令行则是高效驾驭服务器的核心技能。无论是软件部署、服务监控还是故障排查,掌握基于Shell的指令操作都能大幅提升工程效率。从最基础的文件目录管理、文本处理,到权限控制、进程监控与网络调试,命令行提供了一套强大且可自动化的操作范式。尤其对于运维工程师和开发者而言,理解管道、重定向以及脚本化任务,意味着将重复劳动转化为可复用的自动化流程。本文从环境准备讲起,系统梳理常用Linux命令的实际场景与输出验证,并延伸至Shell脚本编写与定时任务,帮助初学者快速建立从操

weixin_30522983的博客 256

推荐开源项目:PHP-Validation —— 精准且灵活的PHP表单验证库

推荐开源项目:PHP-Validation —— 精准且灵活的PHP表单验证库 在Web开发中,数据验证是一个至关重要的环节,它确保了输入的数据质量和安全性。今天,我们要向大家推荐一个强大而易用的PHP数据验证库——,这是一个专注于提供精确、自定义化验证规则的开源项目。 项目简介 PHP-Validation是由开发者Bekos创建的,旨在简化PHP中的数据验证过程。通过提供一组丰富的预定义规则和...

gitblog_00003的博客 544

极智AI | 算能SC5+智算卡驱动安装与升级

大家好,我是极智视界,本文介绍一下 算能SC5+智算卡驱动安装与升级

极智视界 1277

Python爬虫实战:基于Scrapy与Playwright高效爬取人民网新闻数据

本文将详细介绍如何使用Python最新技术栈(Scrapy框架结合Playwright浏览器自动化工具)高效爬取人民网新闻数据。文章包含完整项目搭建、反反爬策略、数据解析存储以及性能优化等核心内容,提供可直接运行的代码示例,适合中高级Python开发者学习现代网络爬虫开发技术。python# 去除特殊空白字符。

2201_76125261的博客 1119

php之laravel框架:用户输入验证方式 validator

验证规则 下面来看下我们在验证用户数据时,都用到了哪几种验证规则。 存在性验证 在用户填写表单的时候,我们会要求用户必须填写上自己的用户名,当用户名为空时将注册失败。 这时我们可以使用required来验证用户名是否为空。 'name' => 'required' 长度验证 我们还可以使用min和max来限制用户名所填写的最小长度和最大长度。 'name' =...

feissss的博客 660

YOLOv11改进策略【卷积层】| arXiv 2025 YOLO-Master中的稀疏混合专家ES-MoE 动态路由提适配 + 稀疏激活降延迟,突破精度-效率权衡

ES-MoE(Efficient Sparse Mixture-of-Experts)是为解决传统YOLO类实时目标检测器的静态计算冗余问题而提出的稀疏混合专家模块。现有YOLO架构对所有输入场景采用统一的密集计算模式,导致简单场景资源浪费、复杂场景(如密集小目标、遮挡场景)计算不足,难以平衡检测精度与推理速度。ES-MoE引入实例条件自适应计算,通过动态路由机制为不同复杂度的输入分配差异化计算资源,突破传统静态架构的精度-效率权衡限制,同时适配实时检测的轻量化需求。

Limiiiing的博客 463

表单验证类 Validator for PHP

&lt;title&gt;表单验证类 Validator for PHP β&lt;/title&gt; &lt;style&gt; body,td{font:normal 12px Verdana;color:#333333} input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #...

sq1228的专栏 320

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php validator类,Validator.php-5

/*** Validate that an attribute exists when any other attribute exists.** @param string $attribute* @param mixed $value* @param mixed $parameters* @return bool*/protected function validateRequ...

weixin_42613360的博客 169

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

php验证器的验证规则

/** * 验证字段值是否为有效格式 * @access protected * @param mixed $value 字段值 * @param string $rule 验证规则 * @param array $data 验证数据 * @return bool */ protected function is($value, $rule, $data = []) {...

weixin_44133711的博客 511

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: [Database]数据库三范式,轻松理解
下一篇: [Language-php]表单验证类 Validator for PHP
hackart
博客等级 码龄17年 0粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值