HTML技巧100例
1. 链接控制
返回前页:使用OnClick="history.go(-1)",如
返回主页:使用OnClick='top.location.href="../chinamail.html"',如
2. 链接提示
在链接语句中增加
OnMouseOver="window.status='这里是 ...'; return true" OnMouseOut="window.status=''; return true"
如: 去哪儿? (在点击链接前注意看状态行显示的变化)
3. 背景音乐
显示操作面板:在相应地方加<embed src="aladdin.mid" width="140" height="35" autostart=true controls="middleconsole">
不显示操作面板:在页中任意地方加<embed src="aladdin.mid" hidden=true autostart=true loop=true>
或<embed src="tt.ram" autostart="true" loop="2" width="80" height="30">
对于不支持embed 标签的浏览器,可以改用标签。
4. 设置主页的缺省字符语言为简体中文(适用于Netscape)
在HTML文件的Head部分中加入<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=cn-gb">
5. 链接的不同方式
在帧里显示:在链接处加target="main"语句,其中main为帧名
整页显示:在链接处加target="_top"语句
开新窗口:在链接处加target="resource window"语句,如<A HREF="index.htm" TARGET="resource window"></A>
6. 强制主页每次都不进行缓存,而从服务器上重读
在Head部分加
<MEAT HTTP-EQUIV="Pragma" CONTENT="no-cache">
这样一来,浏览器将不考虑cacke中的内容而强制重新读入您的页面,等于用户使用Reload。
如果在您有计数器的页中使用,不管从什么地方返回这页
计数器都能加一。不过可能造成用户的反感。
如果在BBS程序中使用,可以实现不用Reload就可更新页的功能。
7. 自动刷新
定时刷新:<META HTTP-EQUIV="Refresh" content="10; URL=http://自己的URL">
幻灯片效果:语句类似上面,但在页面1中URL指向页面2,而页面2指向页面3 ...
页面n指回页面1,即可实现循环显示页面的效果
8.提前载入图片
如果您的站点中后面的页有大图形需要显示,您不妨在第一页中提前载入。把语句:
<img src="image.jpg" width=0 height=0> ,其中width,height要设置为0, 放在第一页HTML中的任何地方。
如果您的访问者在第一页停留的时间足够长,当他进入第二页时,图象会立即显示出来
9. 自动连接
在预定时间后自动连入另一个指定的页面。
方法:
在<title>...</title>中加入以下一行:
<meta http-equiv="refresh" content="10"; url="otherpage.htm">
其中10代表10秒后自动连接。
10. 自动换行:
在主页中自动换行以适应不同的浏览器或分辨率。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
11. 用单像素的GIF文件控控制文本位置
要想准确的控制HTML中的文本位置,可以做一个1*1的透明图(如Blank.gif)。然后在HTML中加入代码:
<img src="Blank.gif" hspace=100>
改变数字100,即可控制
12. 容器标记
<BLOCKQUOTE></BLOCKQUOTE>标记可以把网页上所有的对象都包括起来,但不能对它加入变量。
13.设定图形大小
为使您的Web页在图形下载完之前,能够立即显示文字内容。
在您的主页中的图形元素中加入文件大小变量:
<img src="image.jpg" width=xxxx height=yyy>
xxx,yyy是您的图形的真实像素
14. 移动文字
这在主页上是常用的,其制作方法很简单。
<marquee>要移动的文字</marquee>
1.移动 的方向:<direction=!> !=left, right
2.移动的方式:<bihavior=!> !=scroll ,side,alternate
3.循环次数:<loop=!> !=次数。若未指定则循环不止。
4 循环速度:<scrollamount=!> !=数
15.如何去掉主页超链接的下划线?
把下列语句放在<head>...</head>之间
<style>
A {text-decoration: none}
}
</style>
<script language="javascript">
var contents = true;
</script>
更简单的是
<style>
<!--
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
-->
</style>
16. 浮动背景(背景图像不滚动 )
当你拉住下拉条时,背景不动。(会使浏览速度减慢。:-( )加入:
<body backgroud="#ffff" bgproperties="fixed">
或用CSS样式表定义:
<style type="text/css">
<!--
body { background-image: url(image/bg.gif); background-attachment: fixed}
-->
</style>
17. 让背景图像不平铺
CSS样式表定义:
<style type="text/css">
<!--
body { background-image: url(image/bg.gif); background-repeat: no-repeat}
-->
</style>
18. 测试浏览器类别并自动装入不同的网页
目前微软和网景的浏览器并不能完全兼容所有网页,有的在某种浏览器里非常漂亮,而用其它浏览器查看时却一团糟。如果你需要测试浏览器,可以加入以下JavaScript代码并保存单独一个网页:
<script language="JavaScript">
function TestBrowser(){
ie = ((navigator.appName ==
"Microsoft Internet Explorer") & &
(parseInt(navigator.appVersion) >= 3 ))
ns = ((navigator.appName == "Netscape") & &
(parseInt(navigator.appVersion) >= 3 ))
if (ns) {
setTimeout(''location.href="nn4.htm"'',10);
} else {
setTimeout(''location.href="ie4.htm"'',10);
}
}
</script>
19. 定义本网页的关键字
在网页中加入关键字,可以供某些搜索站台机器人的使用,它们会利用该关键字为你的网站做索引,这样,当别人用关键字搜索网站时,如果你的网页包含该关键字,那么就可以被列出了,定义本网页关键字,可以加入以下代码:
<meta name="keywords" content="html,dreamweaver,flash,css">
content 所包含的就是关键字,你可以自行设置。
这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的排行位置,如:
<meta name="keywords" content="dreamweaver,dreamweaver,dreamweaver">
20. 在网页中加入E-mail链接并显示预定的主题
<a href=mailto:cnshell@163.com?subject=hello>
21. 隐藏在状态栏里出现的链接信息
当指向一个链接时,该链接的信息会出现在浏览器状态栏里,如果需要隐藏信息,可以如下设置:
<a href="http://www.yy0736.com" onMouseOver="window.status='none';return true">test</a>
如果想要指向一个链接时,浏览器状态栏里出现特定的信息,把none 改成你需要的文字即可。
22. 在网页中将表单提交给自已的电子邮箱
表单提交需要CGI程序的支持,但你也可以利用E-mail 提交,当你设计好表单后,把action 内容加入邮件地址即可,如下:
<form method="post" action="mailto:cnshell@163.com" enctype="text/plain">
23. 隐藏免费计数器的的图标
许多网友使用免费计数器,它能帮助你分析网站的流量,如果你想隐藏该服务图标,可以把服务代码中的width=88 height=31都改为1即可。
24. 在网页中加入最后修改日期
在body 中加入以下代码即可:
<script Language="JavaScript">
document.write
("最后修改日期" + document.lastModified);
</Script>
25. 打开一个新的浏览器窗口并设置窗口的属性
如果你需要在载入站点的同时,再打开另一个新窗口,加入以下代码即可:
<script language="JavaScript">
<!--
var gt = unescape('%3e');
var popup = null;
var over = "Launch Pop-up Navigator";
popup = window.open('', 'popupnav', 'width=160,height=160,resizable=1,
status=yes,menubar=no,scrollbars=yes');
if (popup != null) {
if (popup.opener == null) {
popup.opener = self;
}
popup.location.href = 'pop.htm';}
//-->
</script>
期中pop.htm可以设置为你的htm文件,对于设置新窗口的属性,对照以下设置:
popup = window.open('', 'popupnav', 'width=200,height=170,resizable=1,scrollbars=auto');
width:宽,height:高,resizable:是否允许访客缩放新窗口,scrollbars:如果文本超过一屏,是否生成滚动条,status:是否显示状态栏,menubar:是否显示菜单,location:是否显示地址栏.
以上所有属性使用格式为:属性=yes或者no.而width和height两个属性为:width=#pixels,height=#pixels.
26.怎样判断服务器使用的操作系统?
在 浏览器地址栏里,输入要察看的服务器地址,一定要包含目录和文档名字,然后回车,出现请求页面,试着把文档名改为大写格式,如果返回该页面不存在,那么可 能该服务器使用的操作系统为unix或macintosh,如果页面内容返回,那么可能该服务器为windwos操作系统,因为windows对大小写不 敏感.
27. 怎样提高站点在搜索引擎中被搜索到的机会?
当你把自己站点登记到搜索引擎中后,并不表示你的站点就会被经常搜索到,如何提高这个几率呢,很简单,你的主页一般会有一个标题,一般设置在<title></title>中间,这时,你可以在设置完标题后,跟着把关键字也设置在这里,比如:
<title> 宇风多媒体-china,love,dhtml,yufeng21,yahoo</title>.因为搜索引擎会首先察看站点的标题,并把标 题作为你站点的关键字,当你把关键字也设置在了标题中后,搜索引擎也会加入这些关键字,这比其它所有的方法都好,唯一缺点,你站点标题变长了.
28. 如何测试网站的下载速度?
准备一个能读秒的表,比如跑步表,这样精度高些,当然也可以使用普通的表.
首先我们测试纯文本的下载时间,打开浏览器,关闭下载图片功能,然后连接上网,在地址栏输入站点地址,回车后,计时开始,当全部文本内容下载完后,停止计时.
如果你要测试整个站点下载速度,打开图片下载功能,如果你站点含有JavaScript,也要在浏览器选择为支持,同上,打入地址,回车,计时开始,当所有内容下载完后,停止计时.
经过以上两种测试,你就会对自己站点的连接下载速度,作到心中有数了.
29. 如何让站点自动跳转到另一页?
加入以下代码到HTML文件中即可:
<meta http-equiv="refresh" content="5;url=http://www.PHP100.com/index.htm">
content中的"5"为停留的秒数,http://www.PHP100.com/index.htm 是将要跳转的页面。
30.怎样让广告随机出现?
当你想展示许多广告,但页面空间不够时,你可以让广告随机出现,你只需要加入一段代码.网上有这样的代码,搜索……
PHP中设置FCKeditor2.6
FCKeditor 是一个十分强大的网页文本编辑器,它支持多种脚本编程语言和支持多国语言.如果你还不知道或者你知道还不会配置这个的话,请你继续往下看.
我用是FCKeditot的版本是2.6,官方网站上去下载 http://www.FCKeditor.net/
本文介绍的是关于php的配置方法,其他语言略有不同.
假 设网站的目录为: \FCKeditor 一:调用FCKeditor的两种方法 1:通过创建实例 在这里只写调用它的代码了,网站的其他代码当然由你自己写了,把下面的代码加在应该加的地方. <?php include_once("FCKeditor/fckeditor.php"); //引用FCKeditor.php这个文件 $FCKeditor=new FCKeditor(''welefen''); //创建FCKeditor对象的实例 $FCKeditor->BasePath=''FCKeditor/''; //FCKeditor所在的位置,这里它的位置就是''FCKeditor/''; $FCkeditor->ToolbarSet=''Default''; //工具按钮设置 $FCKeditor->Width=''100%''; //设置它的宽度 $FCKeditor->Height=''300px''; //设置它的高度 $FCkeditor->Create(); ?> 2:通过iframe调用创建 在你认为该加的地方加上 <INPUT id=content style="DISPLAY: none" type=hidden name="welefen"> <INPUT id=content___Config style="DISPLAY: none" type=hidden> <IFRAME id=content___Frame src="FCKeditor/editor/fckeditor.html?InstanceName=welefen&Toolbar=Default" frameBorder=0 width=100% scrolling=no height=300> </IFRAME>
对上述两种方法的说明:
在 上述两种方法中,你都看到了字符串''welefen'',你可能不知道是什么意思,现在我给你解释一下 如果你要将文本编辑器中的内容在另外一个页面显示或者要将在它保存在数据库,你可以用 $_POST[''welefen'']或者用$_GET[''welefen'']来获取文本编辑器中的内容,具体是用post还是用get那要看你用 的是什么传递方法了 当然你也可以把welefen改成你想要用的,如''content''.
如果你还不知道什么是ajax,那么这一段话你就 不用看了. 当你用ajax的来获得内容的时候是不是发现得不到内容,如: <script>alert(document.form.content.value)</script>你会发现谈出的窗口 没内容 那么我们可以通过下面的代码来获得它的内容: function getContentValue() { var oEditor = FCKeditorAPI.GetInstance(''content'') ; var acontent=oEditor.GetXHTML(); return acontent; }
二:配置一些文件
1:fckconfig.js的配置
(1).工具按钮设置
查找FCKConfig.ToolbarSets["Default"],这里有很多按钮,下面我们将对他们详细介绍
EditSource 显示HTML源代码 StrikeThrough 删除线 Save 保存 Subscript 下标 NewPage 新建空白页面 Superscript 上标 Preview 预览 JustifyLeft 左对齐 Cut 剪切 JustifyCenter 居中对齐 Copy 复制 JustifyRight 右对齐 Paste 粘贴 JustifyFull 两端对齐 PasteText 纯文本粘贴 InsertOrderedList 自动编号 PasteWord 来自Word的粘贴 InsertUnorderedList 项目符号 Print 打印 Outdent 减少缩进 SpellCheck 拼写检查 Indent 增加缩进 Find 查找 ShowTableBorders 显示表格线 Replace 替换 ShowDetails 显示明细 Undo 撤销 Form 添加Form动作 Redo 还原 Checkbox 复选框 SelectAll 全选 Radio 单选按钮 RemoveFormat 去除格式 Input 单行文本框 Link 插入/编辑 链接 Textarea 滚动文本框 RemoveLink 去除连接 Select 下拉菜单 Anchor 锚点 Button 按钮 Image 插入/编辑 图片 ImageButton 图片按钮 Table 插入/编辑 表格 Hidden 隐藏 Rule 插入水平线 Zoom 显示比例 SpecialChar 插入特殊字符 FontStyleAdv 系统字体 UniversalKey 软键盘 FontStyle 字体样式 Smiley 插入表情符号 FontFormat 字体格式 About 关于 Font 字体 Bold 粗体 FontSize 字体大小 Italic 斜体 TextColor 文字颜色 Underline 下划线 BGColor 背景色
这个默认的是包含了所有的工具按钮,不过到我们具体要用的时 候,有的按钮并不需要,而且还影响速度.那么我们可以将我们不需要的按钮给删了.下面是我的配置,给大家一个参考,当然你可以根据你的喜好. FCKconfig.ToolbarSets["Default"] = [ [''EditSource'',''Save'',''NewPage'',''Preview'',''-'',''Cut'',''Copy'',''Paste'',''PasteText'',''-'',''Find'',''Replace'',''-'',''Undo'',''Redo'',''-'',''SelectAll'',''-'',''Link'',''RemoveLink'',''-'',''Image'',''Table'',''Rule'',''SpecialChar'',''Smiley''] , [''Bold'',''Italic'',''Underline'',''-'',''JustifyLeft'',''JustifyCenter'',''JustifyRight'',''-'',''InsertOrderedList'',''InsertUnorderedList'',''-'',''Form'',''Checkbox'',''Radio'',''Input'',''Textarea'',''Select'',''Button'',''-'',''FontStyleAdv'',''TextColor''] ] ;
如果在前台给用户回复一写帖子的话,还是没必要要上面的,这时你可以在加一个: FCKConfig.ToolbarSets["Basic"] = [ [''Bold'',''Italic'',''-'',''OrderedList'',''UnorderedList'',''-'',''Link'',''Unlink'',''-'',''About''] ] ;
这样的话,你在前台调用的时候就要用$FCKeditor->ToolbarSet=''Basic'',不能在为"Default"了.
(2):语言的配置
查找FCKConfig.DefaultLanguage将它设置为''zh-cn''.
(3):脚本语言的设置
查 找var _FileBrowserLanguage和var _QuickUploadLanguage将他们设置为''php'', 默认是''asp'',如果这里不设置的话,图片将不能上传,这点很重要.当时我在用FCKeditor由于没配置这个,不能上传图片,而我同寝室的用 asp能上传图片,让我烦恼了好多天,最后终于找到是这个原因.
2:图片上传的配置
打开文件FCKeditor/editor /filemanager/browser/default/connectors/php/config.php 查找$Config[''Enabled''],将它设置为''true'' 查找$Config[''UserFilesPath''],将它设置图片的目录,这个目录是相对于主目录的 //例如:我写了一个blog,就可以设置为/blog/upload/
打开文件FCKeditor/editor/filemanager /upload/php/config.php 查找$Config[''Enabled''],将它设置为''true'' 查找$Config[''UseFileType''],将它设置上传文件的目录,最好与上面的图片目录相同
好了,现在所有的配置都已经完成了,现在你要做的只是删除一些不必要的文件了 只要包含''_''的目录名和文件名都可以删除,当然你用的是php,其他语言的一些目录也都可以删除,这样就减小了文件的大小.
FCKEDITOR的FCKeditor_2.6\fckeditor\_samples下有各种语言使用的例子
关键要注意设置BasePath正确,否则找不到文件.
说起 这个,更是郁闷,网上找了N篇资料,那是越看越迷糊啊,最后还是自己看代码搞定的。为了方便日后学习也小记一下吧。
1、下载FCKeditor 多国语言版
2、解压后为文件夹减肥:
删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,fckeditor.php五个文件以外的所有文件
删除目录/editor/_source,_testcases(基本上,所有_开头的文件夹或文件都是可选的),
删除/editor/filemanager/browser/default/connectors/下除PHP目录的所有目录
删除/editor/filemanager/upload/下的除PHP目录的所有目录
删除/editor/lang/下的除了 en.js, zh.js, zh-cn.js三个文件的所有文件
3.
打开/FCKeditor/fckconfig.js
修改
var FCKConfig.DefaultLanguage = 'zh-cn' ;
var _FileBrowserLanguage = 'php' ;
var _QuickUploadLanguage = 'php' ;
要 开启文件上传的话,还需要配置FCKeditor\editor\filemanager\upload\php\config.php以及 \FCKeditor\editor\filemanager\browser\default\connectors\php\config.php
(上传中文名文件会乱码)
4.调用
方法
将FCKeditor放在网站根目录
在PHP文件里面,包含/FCKeditor/fckeditor.php文件
//包含fckeditor类
include("../FCKeditor/fckeditor.php") ;
//设置编辑器路径
$sBasePath = "/FCKeditor/";
//创建一个Fckeditor,表单的名称为ipaddr
$oFCKeditor = new FCKeditor('ipaddr') ;
$oFCKeditor->BasePath = $sBasePath ;
//设置表单初始值
$oFCKeditor->Value = 'This is some <strong>sample text</strong>' ;
$oFCKeditor->Create() ;
//还可设置
$oFCKeditor->Width
$oFCKeditor->Height
$oFCKeditor->ToolbarSet
5.定制
a.定制调用路径
直接将FCKeditor目录改为editor/,并且在调用的时候指定根路径为/editor/。
b.定制风格
可以通过修改editor\skins目录下的Skin来定制风格,主要是修改
CSS
。
c.定制toolbar
在fckconfig.js中,默认定制好了Default,Basic两种toolbar,你也可以根据格式定制自己的toolbar,并且在php中使用$oFCKeditor->ToolbarSet=toolbarname调用
d.定制字体
将fckconfig.js里面的FCKConfig.FontNames字体列表前面加上:
宋体;黑体;隶书;楷体_GB2312;
(注意保存为UTF8格式)
e.关闭文件上传
i. 将fckconfig.js里面的 FCKConfig.LinkBrowser,FCKConfig.ImageBrowser,FCKConfig.FlashBrowser,FCKConfig.LinkUpload,FCKConfig.ImageUpload,FCKConfig.FlashUpload 设置为false.
ii.直接将filemanager里面的php文件删降
iii.定制toolbars
最重要的一点,你需要更改filemanager下面的php文件,只有认证的用户才可以访问。
f.注意事项:请用Editplus之类的编辑器编辑配置文件,注意保存格式为utf8.
百度空间用的好像就是fckeditor,呵呵
参考了一些网友的方法,现总结一下2.6.4版本的配置,删除不需要的文件我这儿就不说了,网上到处都是,fckeditor 2.6.4 版本中默认就是支持php的,所以不需要另外修改变量
解压到站点后,首先是对fckconfig.js的配置:
修改语言:
FCKConfig.DefaultLanguage = 'zh-cn' ;
也可以修改工具栏按钮:
FCKConfig.ToolbarSets["MyStyle"] = [
['Source','Preview','FitWindow','-','Templates'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
['ShowBlocks'],
'/',
['Bold','Italic','Underline','StrikeThrough','TextColor','BGColor'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
'/',
['Style','FontFormat','FontName','FontSize']
// No comma for the last row.
] ;
然后重要的就是修改fckeditor\editor\filemanager\connectors\php\config.php(请注意,之前的版本目录结构有些不同)使之支持文件上传:
$Config['Enabled'] = true ;
$Config['UserFilesPath'] = '/mysite/upload/' ; //此路径是相对于服务器根目录而言的,当然这个目录要存在咯
这样就行了,用法这里就不多说了,还有一点需要注意的是用fckeditor上传图片的时候,对firefox的支持好像有点问题,不能浏览本地文件上传至服务器,算是一个bug吧
require include 的区别
1.如果 require的文件不存在,程序停止运行
如果 include的文件不存在,给出错误信息后还要运行
2.require用相对路径的时候
当A引用B,而B又引用了其他文件C时,C的路径如果是相对路径,则是相对于A的路径,而不是相对于B的'
3. include() && include_once():程序执行到那里才执行
require() && require_once():不管放在页面的哪个地方都先执行
常用正则表达式
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
元字符及其在正则表达式上下文中的行为:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数,匹配确定的n 次。
{n,} n 是一个非负整数,至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。
(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
(?!pattern) 负向预查,与(?=pattern)作用相反
x|y 匹配 x 或 y。
[xyz] 字符集合。
[^xyz] 负值字符集合。
[a-z] 字符范围,匹配指定范围内的任意字符。
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
\cx 匹配由x指明的控制字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。
\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
=========常用正则式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
sql语句:^(select|drop|delete|create|update|insert).*$
1、非负整数:^\d+$
2、正整数:^[0-9]*[1-9][0-9]*$
3、非正整数:^((-\d+)|(0+))$
4、负整数:^-[0-9]*[1-9][0-9]*$
5、整数:^-?\d+$
6、非负浮点数:^\d+(\.\d+)?$
7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
9、负浮点数:^(-((正浮点数正则式)))$
10、英文字符串:^[A-Za-z]+$
11、英文大写串:^[A-Z]+$
12、英文小写串:^[a-z]+$
13、英文字符数字串:^[A-Za-z0-9]+$
14、英数字加下划线串:^\w+$
15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$
17、邮政编码:^[1-9]\d{5}$
18、中文:^[\u0391-\uFFE5]+$
19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$
20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$
21、双字节字符(包括汉字在内):^\x00-\xff
22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)
23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>
24、匹配空行:\n[\s| ]*\r
25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
29、提取信息中的中国手机号码:(86)*0*13\d{9}
30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
31、提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+
34、提取信息中的任何数字 :(-?\d*)(\.\d+)?
35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)
36、电话区号:/^0\d{2,3}$/
37、腾讯QQ号:^[1-9]*[1-9][0-9]*$
38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
在PHP开发中养成7个面向对象的好习惯
在循环里进行的是数组“读”操作,则foreach比while快:
无格式查看复制到剪贴板打印代码?
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key];
}
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key];
}
在循环里进行的是数组“写”操作,则while比foreach快:
无格式查看复制到剪贴板打印代码?
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}
总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很快的,这是因为PHP采用的复制机制是“引用复制,写时拷贝”,这样看来,foreach的高效读操作就不难理解了。
另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结论,多数情况下,类似foreach ($array as $key => $value)形式的代码都应该被替换成while (list($key) = each($array))。
这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,一次请求动辄便会涉及到几百几千几万次数组循环操作,差异就会明显放大。