php中常用的正则表达式(日期 电话 html 中文 邮箱 )
这里包括了,日期的正则 验证日期 数字 电话号码式 时间格式等一些常用的正则表达式
匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
匹配HTML标记的正则表达式: <(S*?)[^>]*>.*? </1> ¦ <.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^s* ¦s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:d{3}-d{8} ¦d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
匹配身份证:d{15} ¦d{18}
评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d* ¦0$ //匹配非负整数(正整数 + 0)
^-[1-9]d* ¦0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d* ¦0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d* ¦0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d* ¦0.d*[1-9]d* ¦0?.0+ ¦0)$ //匹配浮点数
^[1-9]d*.d* ¦0.d*[1-9]d* ¦0?.0+ ¦0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d* ¦0.d*[1-9]d*)) ¦0?.0+ ¦0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
注意在导入时保持数据库教程的编码与txt文档编码尽量一样,要不可能出现乱码问题哦。
<?php教程
//验证文件类型和错误
if($_FILES["insert_first"]["type"] == "text/plain"){
echo "第一步:文件类型上传正确"."<br/>";
if($_FILES["insert_first"]["error"]){
echo "上传错误:".$_FILES["insert_first"]["error"]."<br/>";
}else{
echo "文件名称:".$_FILES["insert_first"]["name"]."<br/>";
echo "文件类型:".$_FILES["insert_first"]["type"]."<br/>";
echo "文件大小:".($_FILES["insert_first"]["size"]/1024)."Kb<br/>";
echo "临时名称:".$_FILES["insert_first"]["tmp_name"]."<br/>";
}
}else{
echo "上传文件格式不正确";
exit;
}//连接数据库
$con = new mysql教程i('localhost','s503440db0','td9928ps教程','s503440db0');
if(mysqli_connect_errno()){
echo "链接数据库失败";
exit;
}
//打开文件
$file = fopen($_FILES["insert_first"]["tmp_name"],"r") or exit("打开文件失败!");var_dump($file);
echo "<br/>";while(!feof($file)){
//逐行分拆
$row = explode(",",fgets($file));
$row0 = $row[0];
$row1 = (string)$row[1];
echo "$row0"."---"."$row1"."<br/>";//判断记录是否存在
$query1 = "select firstid from firstcategory where firstid=$row0";
$query2 = "select firstname from firstcategory where firstname='$row1'";
$result1 = $con->query($query1);
$result2 = $con->query($query2);
//判断行数
$result1 = mysqli_num_rows($result1);
$result2 = mysqli_num_rows($result2);
if($result1){
echo "行号{$row0}已存在<br/>";
}elseif($result2){
echo "分类{$row1}已存在<br/>";
}else{
$query = "insert into firstcategory (firstid,firstname) values ($row0,'音乐')";
$result = $con->query($query);
}
}
echo "导入结束,请检查数据是否正确 http://www.111cn.net ";
fclose($file);
$con->close();?>
mysql数据库
"create table firstcategory (
firstid int unsigned not null primary key,
firstname char(50) not null
)";
php教程 unlink与rmdir实现文件与文件夹删除
删除目录及文件
<?php
function delsvn($dir) {
$dh=opendir($dir);
//找出所有".svn" 的文件夹:
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(is_dir($fullpath)) {
if($file==".svn"){
delsvndir($fullpath);
}else{
delsvn($fullpath);
}
}
}
}
closedir($dh);
}
function delsvndir($svndir){
//先删除目录下的文件:
$dh=opendir($svndir);
while($file=readdir($dh)){
if($file!="."&&$file!=".."){
$fullpath=$svndir."/".$file;
if(is_dir($fullpath)){
delsvndir($fullpath);
}else{
unlink($fullpath);
}
}
}
closedir($dh);
//删除目录文件夹
if(rmdir($svndir)){
return true;
}else{
return false;
}
}
$dir=dirname(__FILE__);
//echo $dir;
delsvn($dir);
?>删除目录
<?
function deldir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if(rmdir($dir)) {
return true;
} else {
return false;
}
}
?>
php教程和mysql教程分页最基本的不是limti s,e 然后加page就可以实现了。
<?php
//初始参数设置
$pagesize=5 ; //分页大小
$pagenum=1 ; //默认为第一页
//第一步:获取当前是第几页
if($_GET){
if($_GET['pagenum']){
$pagenum=$_GET['pagenum'];
}
}
//第二步:获取当前分页的内容列表$sql="Select * From message limit ".($pagenum-1)*$pagesize.",$pagesize ";
$result=mysql_query($sql);while(($row=mysql_fetch_array($result))==true){
echo '<hr>'.$row["title"].'</hr>';
}//第三步:获取记录数
$sql="Select id From message";
$result=mysql_query($sql);
$rownum=mysql_num_rows($result);//第四步:记算分页数
if(($rownum%$pagesize)==0){
$pagecount=$rownum/$pagesize;
}else{
$pagecount=(int)($rownum/$pagesize);
}//第五步:得到分页链接
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url["path"];//第六步:输出分页链接
if($pagenum==1){
echo "[第一页] [上一页]";
}else{
echo "[<a href="$url?pagenum=1">第一页</a>] [<a href="$url?pagenum=".($pagenum-1)."">上一页</a>]";
}
if($pagecount==$pagenum){
echo "[下一页] [最后一页]";
}else{
echo "[<a href="$url?pagenum=".($pagenum+1)."">下一页</a>] [<a href="$url?pagenum=".($pagecount)."">最后一页</a>]";
}?>
部分代码
$rs->pagesize=10;//每页记录数
$curpage=$_GET['curpage'];
if ($curpage==""){
$curpage=1;
}
$rs->absolutepage=$curpage;
for ($i=1 ;$i<=$rs->pagesize;$i++){
if (!$rs->eof) {
//内容。。。。。。。。。。。。。
$rs->movenext;
}
}
if ($rs->recordcount==0){
echo "首页 ";
}
else{
if ($curpage==1){
echo "首页 ";
}
else{
echo "<a href='ad_chanpinleibie.php?curpage=1'>首页</a> ";
}
}
if ($rs->recordcount==0){
echo "上一页 ";
}
else{
if ($curpage==1){
echo "上一页 ";
}
else{
echo "<a href='ad_chanpinleibie.php?curpage=".($curpage-1)."'>上一页</a> ";
}
}
if ($rs->pagecount<($curpage+1)){
echo "下一页 ";
}
else{
echo "<a href='ad_chanpinleibie.php?curpage=".($curpage+1)."'>下一页</a> ";
}
if ($rs->recordcount==0){
echo "尾页 ";
echo "共1页 ";
echo "第1页";
}
else{
if ($rs->pagecount<($curpage+1)){
echo "尾页 ";
echo "共".$rs->pagecount."页 ";
echo "第".$curpage."页";
}
else{
echo "<a href='ad_chanpinleibie.php?curpage=".$rs->pagecount."'>尾页</a> ";
echo "共".$rs->pagecount."页 ";
echo "第".$curpage."页";
}
}
}
$rs->Close();
$conn->Close();
$rs=null;
$conn=null;
<?php教程
/* PHP面向对象的程序设计
*
* PHP5
*
* 数组和对象:都属于PHP的复合类型(一个变量可以存储多个单元)
*
* 对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象中
*
* 对象的三大特性:封装、继承、多态
*
* 面向对象编程(oop) //符合软件工程中的 重用性 灵活性 扩展性
*
* 面向对象和面向过程之间的区别
*
* 最小的单位:函数 //面向过程
* 最小的单位:对象 //面向对象
*
* 什么是对象
近来,新浪管理层开始套现,公开消息披露,当年的MBO使得管理层意气风发地成为新浪第一大股东,可到今天,他们已经成为了第二大股东。股权比例相距倒是不大:和第一大股东FMR9.24%的比例只有0.1%的差距。但新浪管理层手上有约定出售股权的协议,如果算上这部分未来可能会抛售的股权,管理层就只剩下5.74%了。新浪的确有可能再次成为一个“无主的公司”。
这就是新浪作为一家公司,未来的麻烦:盈利模型不清晰,无主的可能性又开始展现。
* 对象是一个实体
* 对象:
* 成员属性==变量//定义对象的外观和状态
* 成员方法==函数//定义对象的功能
*
* 什么是类
* 分类、类型、自定义类型
*
* 在类中定义这个类型的属性和方法
*
* 类和对象之间的一个关系
*
* 声明类-->实例化对象(创建对象)-->使用对象
*
*
* 最难得是如何设计出面向对象的程序,而不是面向对象的语法。
*
*/
?>
原来的成员:
var $name; //声明人的姓名
var $sex; //声明人的性别
var $age; //声明人的年龄
function run(){…….}
改成封装的形式:
private $name; //把人的姓名使用private关键字进行封装
private $sex; //把人的性别使用private关键字进行封装
private $age; //把人的年龄使用private关键字进行封装
private function run(){……} //把人的走路方法使用private关键字进行封装
注意:只要是成员属性前面有其它的关键字就要去掉原有的关键字“var”。
通过private就可以把人的成员(成员属性和成员方法)封装上了。封装上的成员就不能被类外面直接访问了,只有对象内部自己可以访问;下面的代码会产生错误:
class Person
{
//下面是人的成员属性
private $name; //人的名子,被private封装上了
private $sex; //人的性别, 被private封装上了
private $age; //人的年龄, 被private封装上了
//这个人可以说话的方法
function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
//这个人可以走路的方法, 被private封装上了
private function run()
{
echo "这个人在走路";
}
}
//实例化一个人的实例对象
$p1=new Person();
//试图去给私有的属性赋值, 结果会发生错误
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//试图去打印私有的属性, 结果会发生错误
echo $p1->name.”<br>”;
echo $p1->sex.”<br>”;
echo $p1->age.”<br>”
//试图去打印私有的成员方法, 结果会发生错误
$p1->run();
输出结果为:
Fatal error: Cannot access private property Person::$name
Fatal error: Cannot access private property Person::$sex
Fatal error: Cannot access private property Person::$age
Fatal error: Cannot access private property Person::$name
Fatal error: Call to private method Person::run() from context ''
从上面的实例可以看到, 私有的成员是不能被外部访问的, 因为私有成员只能在本对象内部自己访问,比如,$p1这个对象自己想把他的私有属性说出去,在say()这个方法里面访问了私有属性,这样是可以。(没有加任何访问控制,默认的是public的,任何地方都可以访问)
//这个人可以说话的方法, 说出自己的私有属性,在这里也可以访问私有方法
function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
//在这里也可以访问私有方法
//$this->run();
}
因为成员方法say()是公有的, 所以我们在类的外部调用say()方法是可以的,改变上面的代码;
class Person
{
//下面是人的成员属性
private $name; //人的名子,被private封装上了
private $sex; //人的性别, 被private封装上了
private $age; //人的年龄, 被private封装上了
//定义一个构造方法参数为私有的属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age)
{
//通过构造方法传进来的$name给私有成员属性$this->name赋初使值
$this->name=$name;
//通过构造方法传进来的$sex给私有成员属性$this->sex赋初使值
$this->sex=$sex;
//通过构造方法传进来的$age给私有成员属性$this->age赋初使值
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的私有属性,在这里也可以访问私有方法
function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
}
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1=new Person(“张三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面访问$p1对象中的说话方法
$p1->say();
//下面访问$p2对象中的说话方法
$p2->say();
//下面访问$p3对象中的说话方法
$p3->say();
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
<?php
class user{
private $shell ; //用户身份 这里是包含名字 和 权限的二维数组
private $ob; //模块对象 例如 财务模块 caiwu
function __construct($shell){
$this->shell = $shell;
}
function mannger($ob){
$this->ob = new $ob($this->shell);
}
function qianguize(){
$this->shell[name] != '小蜜'? die('!') :'';
$this->ob = new mklove($this->shell);
}
}
class caiwu{
function __construct($shell){
if(!in_array('caiwu',$shell[quanxian])) {
echo($shell[name]."你不可以管理财务哦~!<br/>");
}else{
echo $shell[name]."你可以管理财务<br/>";
}
}
}
class mklove{
function __construct (&$shell){
if(!in_array('mklove',$shell[quanxian])) die('你不可以');
echo "www.111cn.net";
$shell[quanxian][]='caiwu';
}
}
/*
其中user 是用户类
caiwu !
*/
$shell = array(name=> 'fs', quanxian=>array('caiwu','xingzheng','cailiao','mklove'));
$shell0 = array(name=> 'f', quanxian=>array('cailiao','mklove')) ;
$jingli = new user($shell) ;
$xiaomi = new user($shell0) ;
echo "<h4>他们分别试着去管理财务</h4><br/>";
$jingli->mannger('caiwu') ;
$xiaomi->mannger('caiwu') ;
echo "<h4>潜规则后的结果</h4><br/>";
$xiaomi->qianguize();
$xiaomi->mannger('caiwu') ;
?>
相关文章
- 取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
- 网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
- 这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
- c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
- 这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
- 这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
- 这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
- 在本篇文章里小编给大家整理的是一篇关于js用正则表达式筛选年月日的实例方法,对此有兴趣的朋友们可以学习下。...2021-01-04
javascript 手机号码正则表达式验证函数 <font color=red>原创</font>
随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。...2021-05-07