<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[愚人制造]]></title>
<link>http://www.suqingyang.com/</link>
<description><![CDATA[今朝有酒今朝醉，何况今夜我心碎！]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[05955@163.com(寂寞猪八戒)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>愚人制造</title> 
	<url>http://www.suqingyang.com/images/logos.gif</url> 
	<link>http://www.suqingyang.com/</link> 
	<description>愚人制造</description> 
</image>

			<item>
			<link>http://www.suqingyang.com/default.asp?id=70</link>
			<title><![CDATA[2008年18句流行牛语]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[我的心路历程]]></category>
			<pubDate>Mon,03 Mar 2008 14:42:18 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=70</guid>	
		<description><![CDATA[2008年18句流行牛语&nbsp;&nbsp;&nbsp;&nbsp;相当强悍！<br/>1.帅有个屁用!到头来还不是被卒吃掉!<br/>2.你是电，李四光，你是唯一的神话… <br/>3.不怕被人利用，就怕你没用。<br/>4.鄙视我的人这么多，你算老几? <br/>5.人生自古谁无死，哪个拉屎不用纸。<br/>6.不蒸馒头争口气行吗？<br/>7.生的伟大，死在花下！<br/>8.有钱人终成眷属。<br/>9.废话是人际关系的第一句。 <br/>10.只要锄头舞的好，那有墙角挖不倒？<br/>11.要在江湖混，最好是光棍！！ <br/>12.大部分人一辈子只做三件事：自欺、欺人、被人欺。<br/>13.不要和我比懒，我懒得和你比<br/>14.别人的钱财乃我的身外之物。<br/>15.女为悦己者容男为悦己者穷！ <br/>16.是金子，总会花光的；是镜子，总会反光的… <br/>17.天赐你一双翅膀，就应该被红烧… <br/>18.唯女人与英语难过也，唯老婆与工作难找也.]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=69</link>
			<title><![CDATA[心伤]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[我的心路历程]]></category>
			<pubDate>Mon,03 Mar 2008 08:34:36 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=69</guid>	
		<description><![CDATA[程序员的工作大部分是晚上通宵干<br/>可是现在晚上通宵要写申请<br/>申请通过后<br/>第二天早上允许 9：00的时候来上班]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=68</link>
			<title><![CDATA[sql server2000中使用convert来取得datetime数 ]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[技术文档]]></category>
			<pubDate>Sat,01 Mar 2008 06:03:50 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=68</guid>	
		<description><![CDATA[sql server2000中使用convert来取得datetime数据类型样式（全）&nbsp;&nbsp;<br/>语句及查询结果： <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 1): 05/16/06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 2): 06.05.16 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 3): 16/05/06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 4): 16.05.06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 5): 16-05-06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 6): 16 05 06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 8): 10:57:46 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 10): 05-16-06 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 11): 06/05/16 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 12): 060516 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 24): 10:57:47 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 108): 10:57:49 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 112): 20060516 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM <br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM <br/><br/>说明: <br/>使用 CONVERT： <br/><br/>CONVERT ( data_type [ ( length ) ] , e&#173;xpression [ , style ] ) <br/><br/>参数 <br/>e&#173;xpression <br/><br/>是任何有效的 Microsoft® SQL Server™ 表达式。。&nbsp;&nbsp;<br/><br/>data_type <br/><br/>目标系统所提供的数据类型，包括 bigint 和 sql_variant。不能使用用户定义的数据类型。 <br/>length <br/><br/>nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。&nbsp;&nbsp;<br/><br/>style <br/><br/>日期格式样式，借以将 datetime 或 smalldatetime 数据转换为字符数据（nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型）；或者字符串格式样式，借以将 float、real、money 或 smallmoney 数据转换为字符数据（nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型）。 <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=66</link>
			<title><![CDATA[asp正则表达式]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[技术文档]]></category>
			<pubDate>Sat,23 Feb 2008 16:13:48 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=66</guid>	
		<description><![CDATA[<p><strong>&nbsp;&nbsp; 什么是正则表达式</strong><br /><br />&nbsp;&nbsp; 如果原来没有使用过正则表达式，那么可能对这个术语和概念会不太熟悉。不过，它们并不是您想象的那么新奇。<br /><br />&nbsp;&nbsp; 请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符，而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件：<br /><br />　data1.dat<br /><br />　data2.dat<br /><br />　datax.dat<br /><br />　dataN.dat<br /><br />如果使用 * 字符代替 ? 字符，则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名：<br /><br />　data.dat<br /><br />　data1.dat<br /><br />　data2.dat<br /><br />　data12.dat<br /><br />　datax.dat<br /><br />　dataXYZ.dat<br /><br />&nbsp;&nbsp;&nbsp; 尽管这种搜索文件的方法肯定很有用，但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念，不过正则表达式的功能更强大，也更灵活。<br /><br /><strong>&nbsp;&nbsp; 早期起源</strong><br /><br />&nbsp;&nbsp;&nbsp; 正则表达式的&ldquo;祖先&rdquo;可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。<br /><br />&nbsp;&nbsp;&nbsp; 1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上，发表了一篇标题为&ldquo;神经网事件的表示法&rdquo;的论文，引入了正则表达式的概念。正则表达式就是用来描述他称为&ldquo;正则集的代数&rdquo;的表达式，因此采用&ldquo;正则表达式&rdquo;这个术语。<br /><br />&nbsp;&nbsp;&nbsp; 随后，发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究，Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。<br /><br />&nbsp;&nbsp;&nbsp; 如他们所说，剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。<br /><br /><strong>&nbsp;&nbsp; 使用正则表达式</strong><br /><br />&nbsp;&nbsp;&nbsp; 在典型的搜索和替换操作中，必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了，但是由于它缺乏灵活性，因此在搜索动态文本时就有困难了，甚至是不可能的。 <br /><br />&nbsp; 使用正则表达式，就可以：</p>
<p>&nbsp;&nbsp; &bull;测试字符串的某个模式。例如，可以对一个输入字符串进行测试，看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 <br /><br />&nbsp;&nbsp; &bull;替换文本。可以在文档中使用一个正则表达式来标识特定文字，然后可以全部将其删除，或者替换为别的文字。 <br /><br />&nbsp;&nbsp; &bull;根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 <br /><br />&nbsp;&nbsp; 例如，如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记，则可以使用正则表达式对每个文件进行测试，看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法，就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料，最后，可以再次使用正则表达式来查找并替换那些需要替换的标记。<br /><br />&nbsp;&nbsp; 另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集，具有丰富的字符串处理功能。与 C 类似的 Jscript 则没有这一能力。正则表达式给 JScript 的字符串处理能力带来了明显改善。不过，可能还是在 VBScript 中使用正则表达式的效率更高，它允许在单个表达式中执行多个字符串操作。<br /><br /><strong>&nbsp;&nbsp; 正则表达式语法</strong><br /><br />&nbsp;&nbsp; 一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为<em>元字符</em>）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。<br /><br />&nbsp;&nbsp; 这里有一些可能会遇到的正则表达式示例：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="30%">JScript</th><th width="30%">VBScript</th><th width="40%">匹配</th>
        </tr>
        <tr valign="top">
            <td width="30%">/^\[ \t]*$/</td>
            <td width="30%">&quot;^\[ \t]*$&quot;</td>
            <td width="40%">匹配一个空白行。</td>
        </tr>
        <tr valign="top">
            <td width="30%">/\d{2}-\d{5}/</td>
            <td width="30%">&quot;\d{2}-\d{5}&quot;</td>
            <td width="40%">验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。</td>
        </tr>
        <tr valign="top">
            <td width="30%">/＜(.*)＞.*＜\/\1＞/</td>
            <td width="30%">&quot;＜(.*)＞.*＜\/\1＞&quot;</td>
            <td width="40%">匹配一个 HTML 标记。</td>
        </tr>
    </tbody>
</table>
<br /><br />&nbsp;&nbsp; 下表是元字符及其在正则表达式上下文中的行为的一个完整列表：<br /><br />
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="480" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="16%">字符</th><th width="84%">描述</th>
        </tr>
        <tr valign="top">
            <td width="16%">\</td>
            <td width="84%">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 &quot;n&quot;。'\n' 匹配一个换行符。序列 '\\' 匹配 &quot;\&quot; 而 &quot;\(&quot; 则匹配 &quot;(&quot;。</td>
        </tr>
        <tr valign="top">
            <td width="16%">^</td>
            <td width="84%">匹配输入字符串的开始位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。</td>
        </tr>
        <tr valign="top">
            <td width="16%">$</td>
            <td width="84%">匹配输入字符串的结束位置。如果设置了<strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。</td>
        </tr>
        <tr valign="top">
            <td width="16%">*</td>
            <td width="84%">匹配前面的子表达式零次或多次。例如，zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。* 等价于{0,}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">+</td>
            <td width="84%">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;，但不能匹配 &quot;z&quot;。+ 等价于 {1,}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">?</td>
            <td width="84%">匹配前面的子表达式零次或一次。例如，&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或 &quot;does&quot; 中的&quot;do&quot; 。? 等价于 {0,1}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>}</td>
            <td width="84%"><em>n</em> 是一个非负整数。匹配确定的 <em>n</em> 次。例如，'o{2}' 不能匹配 &quot;Bob&quot; 中的 'o'，但是能匹配 &quot;food&quot; 中的两个 o。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>,}</td>
            <td width="84%"><em>n</em> 是一个非负整数。至少匹配<em>n</em> 次。例如，'o{2,}' 不能匹配 &quot;Bob&quot; 中的 'o'，但能匹配 &quot;foooood&quot; 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>,<em>m</em>}</td>
            <td width="84%"><em>m</em> 和 <em>n</em> 均为非负整数，其中<em>n</em> ＜= <em>m</em>。最少匹配 <em>n</em> 次且最多匹配 <em>m</em> 次。例如，&quot;o{1,3}&quot; 将匹配 &quot;fooooood&quot; 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</td>
        </tr>
        <tr valign="top">
            <td width="16%">?</td>
            <td width="84%">当该字符紧跟在任何一个其他限制符 (*, +, ?, {<em>n</em>}, {<em>n</em>,}, {<em>n</em>,<em>m</em>}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 &quot;oooo&quot;，'o+?' 将匹配单个 &quot;o&quot;，而 'o+' 将匹配所有 'o'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">.</td>
            <td width="84%">匹配除 &quot;\n&quot; 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。</td>
        </tr>
        <tr valign="top">
            <td width="16%">(<em>pattern</em>)</td>
            <td width="84%">匹配 <em>pattern</em> 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 <strong>SubMatches</strong> 集合，在JScript 中则使用 <strong>$0</strong>&hellip;<strong>$9</strong> 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">(?:<em>pattern</em>)</td>
            <td width="84%">匹配 <em>pattern</em> 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 &quot;或&quot; 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。</td>
        </tr>
        <tr valign="top">
            <td width="16%">(?=<em>pattern</em>)</td>
            <td width="84%">正向预查，在任何匹配 <em>pattern</em> 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot; ，但不能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</td>
        </tr>
        <tr valign="top">
            <td width="16%">(?!<em>pattern</em>)</td>
            <td width="84%">负向预查，在任何不匹配 <em>pattern</em> 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;，但不能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始 </td>
        </tr>
        <tr valign="top">
            <td width="16%"><em>x</em>|<em>y</em></td>
            <td width="84%">匹配 <em>x</em> 或 <em>y</em>。例如，'z|food' 能匹配 &quot;z&quot; 或 &quot;food&quot;。'(z|f)ood' 则匹配 &quot;zood&quot; 或 &quot;food&quot;。</td>
        </tr>
        <tr valign="top">
            <td width="16%">[<em>xyz</em>]</td>
            <td width="84%">字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 &quot;plain&quot; 中的 'a'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">[^<em>xyz</em>]</td>
            <td width="84%">负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 &quot;plain&quot; 中的'p'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">[<em>a-z</em>]</td>
            <td width="84%">字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。</td>
        </tr>
        <tr valign="top">
            <td width="16%">[^<em>a-z</em>]</td>
            <td width="84%">负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\b</td>
            <td width="84%">匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配&quot;never&quot; 中的 'er'，但不能匹配 &quot;verb&quot; 中的 'er'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\B</td>
            <td width="84%">匹配非单词边界。'er\B' 能匹配 &quot;verb&quot; 中的 'er'，但不能匹配 &quot;never&quot; 中的 'er'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\c<em>x</em></td>
            <td width="84%">匹配由 <em>x </em>指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。<em>x</em> 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\d</td>
            <td width="84%">匹配一个数字字符。等价于 [0-9]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\D</td>
            <td width="84%">匹配一个非数字字符。等价于 [^0-9]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\f</td>
            <td width="84%">匹配一个换页符。等价于 \x0c 和 \cL。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\n</td>
            <td width="84%">匹配一个换行符。等价于 \x0a 和 \cJ。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\r</td>
            <td width="84%">匹配一个回车符。等价于 \x0d 和 \cM。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\s</td>
            <td width="84%">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [&nbsp;\f\n\r\t\v]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\S</td>
            <td width="84%">匹配任何非空白字符。等价于 [^&nbsp;\f\n\r\t\v]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\t</td>
            <td width="84%">匹配一个制表符。等价于 \x09 和 \cI。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\v</td>
            <td width="84%">匹配一个垂直制表符。等价于 \x0b 和 \cK。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\w</td>
            <td width="84%">匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\W</td>
            <td width="84%">匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\x<em>n</em></td>
            <td width="84%">匹配 <em>n</em>，其中 <em>n</em> 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 &quot;A&quot;。'\x041' 则等价于 '\x04' &amp; &quot;1&quot;。正则表达式中可以使用 ASCII 编码。.</td>
        </tr>
        <tr valign="top">
            <td width="16%">\<em>num</em></td>
            <td width="84%">匹配 <em>num</em>，其中 <em>num</em> 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\<em>n</em></td>
            <td width="84%">标识一个八进制转义值或一个向后引用。如果 \<em>n</em> 之前至少 <em>n</em> 个获取的子表达式，则 <em>n</em> 为向后引用。否则，如果 <em>n</em> 为八进制数字 (0-7)，则 <em>n</em> 为一个八进制转义值。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\<em>nm</em></td>
            <td width="84%">标识一个八进制转义值或一个向后引用。如果 \<em>nm</em> 之前至少有 <em>nm</em> 个获得子表达式，则 <em>nm</em> 为向后引用。如果 \<em>nm</em> 之前至少有 <em>n</em> 个获取，则 <em>n</em> 为一个后跟文字 <em>m </em>的向后引用。如果前面的条件都不满足，若 <em>n</em> 和 <em>m</em> 均为八进制数字 (0-7)，则 \<em>nm</em> 将匹配八进制转义值 <em>nm</em>。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\<em>nml</em></td>
            <td width="84%">如果 <em>n</em> 为八进制数字 (0-3)，且 <em>m</em> 和 <em>l</em> 均为八进制数字 (0-7)，则匹配八进制转义值 <em>nml。</em></td>
        </tr>
        <tr valign="top">
            <td width="16%">\u<em>n</em></td>
            <td width="84%">匹配 <em>n</em>，其中 <em>n</em> 是一个用四个十六进制数字表示的Unicode 字符。例如， \u00A9 匹配版权符号 (&copy;)。</td>
        </tr>
    </tbody>
</table>
<p><span class="top11"><strong>&nbsp;&nbsp; 建立正则表达式</strong><br /><br />&nbsp;&nbsp; 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。对 JScript 而言，分隔符为一对正斜杠 (/) 字符。例如：/expression/。对 VBScript 而言，则采用一对引号 (&quot;&quot;) 来确定正则表达式的边界。例如：&quot;expression&quot;。 </span></p>
<p>&nbsp;&nbsp; 在上面所示的两个示例中，正则表达式模式 (expression) 均存储在RegExp 对象的Pattern 属性中。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。 <br /><br /><strong>&nbsp;&nbsp; 优先级顺序</strong><br /><br />&nbsp;&nbsp; 在构造正则表达式之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先级顺序来求值。下表从最高优先级到最低优先级列出各种正则表达式操作符的优先级顺序：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="40%">操作符</th><th width="60%">描述</th>
        </tr>
        <tr valign="top">
            <td width="40%">\</td>
            <td width="60%">转义符</td>
        </tr>
        <tr valign="top">
            <td width="40%">(), (?:), (?=), []</td>
            <td width="60%">圆括号和方括号</td>
        </tr>
        <tr valign="top">
            <td width="40%">*, +, ?, {n}, {n,}, {n,m}</td>
            <td width="60%">限定符</td>
        </tr>
        <tr valign="top">
            <td width="40%">^, $, \<em>anymetacharacter</em></td>
            <td width="60%">位置和顺序</td>
        </tr>
        <tr valign="top">
            <td width="40%">|</td>
            <td width="60%">&ldquo;或&rdquo;操作</td>
        </tr>
    </tbody>
</table>
<p><br /><strong>&nbsp;&nbsp; 普通字符</strong><br /><br />&nbsp;&nbsp; 普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。最简单的正则表达式是一个单独的普通字符，可以匹配所搜索字符串中的该字符本身。例如，单字符模式 'A' 可以匹配所搜索字符串中任何位置出现的字母 'A'。这里有一些单字符正则表达式模式的示例：</p>
<p>/a/<br /><br />/7/<br /><br />/M/<br /><br />等价的 VBScript 单字符正则表达式为：<br /><br />&quot;a&quot;<br /><br />&quot;7&quot;<br /><br />&quot;M&quot;<br /><br />&nbsp;&nbsp; 可以将多个单字符组合在一起得到一个较大的表达式。例如，下面的 JScript 正则表达式不是别的，就是通过组合单字符表达式 'a'、'7'以及 'M' 所创建出来的一个表达式。<br /><br />/a7M/<br /><br />&nbsp;&nbsp; 等价的 VBScript 表达式为：&quot;a7M&quot;<br /><br />&nbsp;&nbsp; 请注意这里没有连接操作符。所需要做的就是将一个字符放在了另一个字符后面。<br /><br /><strong>&nbsp;&nbsp; 特殊字符</strong><br /><br />&nbsp;&nbsp; 有不少元字符在试图对其进行匹配时需要进行特殊的处理。要匹配这些特殊字符，必须首先将这些字符转义，也就是在前面使用一个反斜杠 (\)。下表给出了这些特殊字符及其含义：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="16%">特殊字符</th><th width="84%">说明</th>
        </tr>
        <tr valign="top">
            <td width="16%">$</td>
            <td width="84%">匹配输入字符串的结尾位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身，请使用 \$。</td>
        </tr>
        <tr valign="top">
            <td width="16%">( )</td>
            <td width="84%">标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 \( 和 \)。</td>
        </tr>
        <tr valign="top">
            <td width="16%"><strong>*</strong></td>
            <td width="84%">匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 \*。</td>
        </tr>
        <tr valign="top">
            <td width="16%"><strong>+</strong></td>
            <td width="84%">匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 \+。</td>
        </tr>
        <tr valign="top">
            <td width="16%"><strong>.</strong></td>
            <td width="84%">匹配除换行符 \n之外的任何单字符。要匹配 .，请使用 \。</td>
        </tr>
        <tr valign="top">
            <td width="16%">[ </td>
            <td width="84%">标记一个中括号表达式的开始。要匹配 [，请使用 \[。</td>
        </tr>
        <tr valign="top">
            <td width="16%">?</td>
            <td width="84%">匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 \?。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\</td>
            <td width="84%">将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 &quot;\&quot;，而 '\(' 则匹配 &quot;(&quot;。</td>
        </tr>
        <tr valign="top">
            <td width="16%">^</td>
            <td width="84%">匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 \^。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{</td>
            <td width="84%">标记限定符表达式的开始。要匹配 {，请使用 \{。</td>
        </tr>
        <tr valign="top">
            <td width="16%">|</td>
            <td width="84%">指明两项之间的一个选择。要匹配 |，请使用 \|。</td>
        </tr>
    </tbody>
</table>
<p><br /><strong>&nbsp;&nbsp; 非打印字符</strong></p>
<p>&nbsp;&nbsp; 有不少很有用的非打印字符，偶尔必须使用。下表显示了用来表示这些非打印字符的转义序列：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="16%">字符</th><th width="84%">含义</th>
        </tr>
        <tr valign="top">
            <td width="16%">\c<em>x</em></td>
            <td width="84%">匹配由<em>x</em>指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。<em>x</em> 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\f</td>
            <td width="84%">匹配一个换页符。等价于 \x0c 和 \cL。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\n</td>
            <td width="84%">匹配一个换行符。等价于 \x0a 和 \cJ。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\r</td>
            <td width="84%">匹配一个回车符。等价于 \x0d 和 \cM。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\s</td>
            <td width="84%">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [&nbsp;\f\n\r\t\v]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\S</td>
            <td width="84%">匹配任何非空白字符。等价于 [^&nbsp;\f\n\r\t\v]。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\t</td>
            <td width="84%">匹配一个制表符。等价于 \x09 和 \cI。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\v</td>
            <td width="84%">匹配一个垂直制表符。等价于 \x0b 和 \cK。</td>
        </tr>
    </tbody>
</table>
<p><br /><strong>&nbsp;&nbsp; 字符匹配</strong></p>
<p>&nbsp;&nbsp; 句点 (.) 匹配一个字符串中任何单个的打印或非打印字符，除了换行符 (\n) 之外。下面的 JScript 正则表达式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等，同样也可以匹配 'a1c'、'a2c'、a-c'以及 a#c'：<br /><br />/a.c/等价的 VBScript 正则表达式为：&quot;a.c&quot;<br /><br />&nbsp;&nbsp; 如果试图匹配一个包含文件名的字符串，其中句点 (.) 是输入字符串的一部分，则可以在正则表达式中的句点前面加上一个反斜杠 (\) 字符来实现这一要求。举例来说，下面的 JScript 正则表达式就能匹配 'filename.ext'：<br /><br />/filename\.ext/对 VBScript 而言，等价的表达式如下所示：<br /><br />&quot;filename\.ext&quot; </p>
<p>&nbsp;&nbsp;&nbsp; 这些表达式仍然是相当有限的。它们只允许匹配<em>任何</em>单字符。很多情况下，对从列表中匹配特殊字符十分有用。例如，如果输入文字中包含用数字表示为Chapter 1, Chapter 2诸如此类的章节标题，你可能需要找到这些章节标题。</p>
<p><strong>&nbsp;&nbsp; 括号表达式</strong><br /><br />&nbsp;&nbsp; 可以在一个方括号 ([ 和 ]) 中放入一个或多个单字符，来创建一个待匹配的列表。如果字符被放入括号中括起来，则该列表称为<em>括号表达式</em>。括号内和其他任何地方一样，普通字符代表其本身，也就是说，它们匹配输入文字中出现的一处自己。大多数特殊字符在位于括号表达式中时都将失去其含义。这里有一些例外： </p>
<ul>
    <li>']' 字符如果不是第一项，则将结束一个列表。要在列表中匹配 ']' 字符，请将其放在第一项，紧跟在开始的 '[' 后面。 </li>
    <li>'\' 仍然作为转义符。要匹配 '\' 字符，请使用 '\\'。 </li>
</ul>
<p>&nbsp;&nbsp; 括号表达式中所包含的字符只匹配该括号表达式在正则表达式中所处位置的一个单字符。下面的 JScript 正则表达式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5'：/Chapter [12345]/在 VBScript 中要匹配同样的章节标题，请使用下面的表达式：&quot;Chapter [12345]&quot;</p>
<p>&nbsp;&nbsp; 请注意单词 'Chapter' 及后面的空格与括号内的字符的位置关系是固定的。</p>
<p>&nbsp;&nbsp; 因此，括号表达式只用来指定满足紧跟在单词 'Chapter' 和一个空格之后的单字符位置的字符集合。这里是第九个字符位置。<br /><br />&nbsp;&nbsp; 如果希望使用范围而不是字符本身来表示待匹配的字符，则可以使用连字符将该范围的开始和结束字符分开。每个字符的字符值将决定其在一个范围内的相对顺序。下面的 JScript 正则表达式包含了一个等价于上面所示的括号列表的范围表达式。<br /><br /></p>
<pre>/Chapter [1-5]/VBScript 中相同功能的表达式如下所示：&quot;Chapter [1-5]&quot;</pre>
<p>&nbsp;&nbsp; 如果以这种方式指定范围，则开始和结束值都包括在该范围内。有一点特别需要注意的是，在 Unicode 排序中起始值一定要在结束值之前。<br /><br />&nbsp;&nbsp; 如果想在括号表达式中包括连字符，则必须使用下述方法之一： </p>
<ul>
    <li>使用反斜杠将其转义： [\-] </li>
    <li>将连字符放在括号列表的开始和结束位置。下面的表达式能匹配所有的小写字母和连字符： [-a-z]&nbsp; [a-z-] </li>
    <li>创建一个范围，其中开始字符的值小于连字符，而结束字符的值等于或大于连字符。下面两个正则表达式都满足这一要求：[!--]&nbsp; [!-~] </li>
</ul>
<p>&nbsp;&nbsp; 同样，通过在列表开始处放置一个插入符(^)，就可以查找所有不在列表或范围中的字符。如果该插入符出现在列表的其他位置，则匹配其本身，没有任何特殊含义。下面的 JScript 正则表达式匹配章节号大于 5 的章节标题：<br /><br /></p>
<pre>/Chapter [^12345]/对 VBScript 则使用：&quot;Chapter [^12345]&quot;</pre>
<p>&nbsp;&nbsp; 在上面所示的示例中，表达式将匹配第九个位置处除1, 2, 3, 4, or 5 之外的任何数字字符。因此， 'Chapter 7' 为一个匹配，同样 'Chapter 9' 也是如此。<br /><br />&nbsp;&nbsp; 上面的表达式可以使用连字符 (-) 表示。对 JScript 为：/Chapter [^1-5]/或者，对 VBScript 为：&quot;Chapter [^1-5]&quot;</p>
<p>括号表达式的典型用法是指定对任何大写或小写字母字符或任何数字的匹配。</p>
<p>&nbsp;&nbsp; 下面的 JScript 表达式给出了这一匹配：/[A-Za-z0-9]/等价的 VBScript 表达式为：&quot;[A-Za-z0-9]&quot;</p>
<p><span class="top11"><strong>&nbsp;&nbsp; 限定符</strong> </span></p>
<p>&nbsp;&nbsp; 有时候不知道要匹配多少字符。为了能适应这种不确定性，正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。<br /><br />&nbsp; 下表给出了各种限定符及其含义的说明：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="16%">字符</th><th width="84%">描述</th>
        </tr>
        <tr valign="top">
            <td width="16%">* </td>
            <td width="84%">匹配前面的子表达式零次或多次。例如，zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。* 等价于{0,}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">+ </td>
            <td width="84%">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;，但不能匹配 &quot;z&quot;。+ 等价于 {1,}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">? </td>
            <td width="84%">匹配前面的子表达式零次或一次。例如，&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或 &quot;does&quot; 中的&quot;do&quot; 。? 等价于 {0,1}。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>}</td>
            <td width="84%"><em>n</em> 是一个非负整数。匹配确定的 <em>n</em> 次。例如，'o{2}' 不能匹配 &quot;Bob&quot; 中的 'o'，但是能匹配 &quot;food&quot; 中的两个 o。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>,} </td>
            <td width="84%"><em>n</em> 是一个非负整数。至少匹配<em>n</em> 次。例如，'o{2,}' 不能匹配 &quot;Bob&quot; 中的 'o'，但能匹配 &quot;foooood&quot; 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</td>
        </tr>
        <tr valign="top">
            <td width="16%">{<em>n</em>,<em>m</em>} </td>
            <td width="84%"><em>m</em> 和 <em>n</em> 均为非负整数，其中<em>n</em> ＜= <em>m</em>。最少匹配 <em>n</em> 次且最多匹配 <em>m</em> 次。例如，&quot;o{1,3}&quot; 将匹配 &quot;fooooood&quot; 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</td>
        </tr>
    </tbody>
</table>
<p><br /><br />&nbsp;&nbsp; 对一个很大的输入文档而言，章节数很轻易就超过九章，因此需要有一种方法来处理两位数或者三位数的章节号。限定符就提供了这个功能。下面的JScript 正则表达式可以匹配具有任何位数的章节标题：<br /><br />/Chapter [1-9][0-9]*/下面的 VBScript 正则表达式执行同样的匹配：&quot;Chapter [1-9][0-9]*&quot;</p>
<p>&nbsp;&nbsp; 请注意限定符出现在范围表达式之后。因此，它将应用于所包含的整个范围表达式，在本例中，只指定了从 0 到 9 的数字。<br /><br />&nbsp;&nbsp; 这里没有使用 '+' 限定符，因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符，因为这将把章节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。<br /><br />&nbsp;&nbsp; 如果已知章节数限制只有99 章，则可以使用下面的 JScript 表达式来指定至少有一位数字，但不超过两个数字。<br /><br /></p>
<pre>/Chapter [0-9]{1,2}/对 VBScript 可以使用下述正则表达式：&quot;Chapter [0-9]{1,2}&quot;</pre>
<p>&nbsp;&nbsp; 上述表达式的缺点是如果有一个章节号大于 99，它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter 0，而且仍能匹配。一个更好的用来匹配两位数的 JScript 表达式如下：<br /><br />/Chapter [1-9][0-9]?/或者/Chapter [1-9][0-9]{0,1}/</p>
<p>对 VBScript 而言，下述表达式与上面等价：<br /><br />&quot;Chapter [1-9][0-9]?&quot;或者&quot;Chapter [1-9][0-9]{0,1}&quot;</p>
<p>'*'、'+' 和 '?' 限定符都称之为<em>贪婪的</em>，也就是说，他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。<br /><br />&nbsp;&nbsp; 例如，你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式：<br /><br />＜H1＞Chapter 1 &ndash; Introduction to Regular Expressions＜/H1＞</p>
<p>&nbsp;&nbsp; 下面的表达式匹配从开始的小于号 (＜) 到 H1 标记结束处的大于号之间的所有内容。<br /><br /></p>
<pre>/＜.*＞/VBScript 的正则表达式为&quot;＜.*＞&quot;</pre>
<p>&nbsp;&nbsp; 如果所要匹配的就是开始的 H1 标记，则下述非贪婪地表达式就只匹配。<br /><br /></p>
<pre>/＜.*?＞/或者&quot;＜.*?＞&quot;</pre>
<p>&nbsp;&nbsp; 通过在 '*'、 '+' 或 '?' 限定符后放置 '?'，该表达式就从贪婪匹配转为了非贪婪或最小匹配。</p>
<p><strong>&nbsp;&nbsp; 定位符</strong><br /><br />&nbsp;&nbsp; 到现在为止，所看到的示例都只考虑查找任何地方出现的章节标题。出现的任何一个字符串 'Chapter' 后跟一个空格和一个数字可能是一个真正的章节标题，也可能是对其他章节的交叉引用。由于真正的章节标题总是出现在一行的开始，因此需要设计一个方法只查找标题而不查找交叉引用。<br /><br />&nbsp;&nbsp; 定位符提供了这个功能。定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。下表包含了正则表达式及其含义的列表：</p>
<table bordercolor="#999999" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" border="1">
    <tbody>
        <tr valign="top">
            <th width="16%">字符</th><th width="84%">描述</th>
        </tr>
        <tr valign="top">
            <td width="16%">^</td>
            <td width="84%">匹配输入字符串的开始位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。</td>
        </tr>
        <tr valign="top">
            <td width="16%">$</td>
            <td width="84%">匹配输入字符串的结束位置。如果设置了<strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\b</td>
            <td width="84%">匹配一个单词边界，也就是指单词和空格间的位置。</td>
        </tr>
        <tr valign="top">
            <td width="16%">\B</td>
            <td width="84%">匹配非单词边界。</td>
        </tr>
    </tbody>
</table>
<p><br />&nbsp;&nbsp; 不能对定位符使用限定符。因为在一个换行符或者单词边界的前面或后面不会有连续多个位置，因此诸如 '^*' 的表达式是不允许的。<br /><br />&nbsp;&nbsp; 要匹配一行文字开始位置的文字，请在正则表达式的开始处使用 '^' 字符。不要把 '^' 的这个语法与其在括号表达式中的语法弄混。它们的语法根本不同。<br /><br />&nbsp;&nbsp; 要匹配一行文字结束位置的文字，请在正则表达式的结束处使用 '$' 字符。<br /><br />&nbsp;&nbsp; 要在查找章节标题时使用定位符，下面的 JScript 正则表达式将匹配位于一行的开始处最多有两个数字的章节标题：<br /><br /></p>
<pre>  /^Chapter [1-9][0-9]{0,1}/VBScript 中相同功能的正则表达式如&quot;^Chapter [1-9][0-9]{0,1}&quot;</pre>
<p>&nbsp; 一个真正的章节标题不仅出现在一行的开始，而且这一行中也仅有这一个内容，因此，它必然也位于一行的结束。下面的表达式确保所指定的匹配只匹配章节而不会匹配交叉引用。它是通过创建一个只匹配一行文字的开始和结束位置的正则表达式来实现的。<br /><br /></p>
<pre>/^Chapter [1-9][0-9]{0,1}$/对 VBScript 则使用&quot;^Chapter [1-9][0-9]{0,1}___FCKpd___4quot;</pre>
<p>&nbsp;&nbsp; 匹配单词边界有少许不同，但却给正则表达式增加了一个非常重要的功能。单词边界就是单词和空格之间的位置。非单词边界就是其他任何位置。下面的 JScript 表达式将匹配单词 'Chapter' 的前三个字符，因为它们出现在单词边界后/\bCha/对 VBScript 为&quot;\bCha&quot;</p>
<p>&nbsp;&nbsp; 这里 '\b' 操作符的位置很关键。如果它位于要匹配的字符串的开始，则将查找位于单词开头处的匹配；如果它位于改字符串的末尾，则查找位于单词结束处的匹配。例如，下面的表达式将匹配单词 'Chapter' 中的 'ter'，因为它出现在单词边界之前/ter\b/以及&quot;ter\b&quot;</p>
<p>&nbsp;&nbsp; 下面的表达式将匹配 'apt'，因为它位于 'Chapter' 中间，但不会匹配 'aptitude' 中的'apt'：/\Bapt/以及&quot;\Bapt&quot;</p>
<p>&nbsp;&nbsp; 这是因为在单词 'Chapter' 中 'apt' 出现在非单词边界位置，而在单词 'aptitude' 中位于单词边界位置。非单词边界操作符的位置不重要，因为匹配与一个单词的开头或结尾无关。<br /><br /><strong>&nbsp;&nbsp; 选择与编组</strong><br /><br />&nbsp;&nbsp; 选择允许使用 '|' 字符来在两个或多个候选项中进行选择。通过扩展章节标题的正则表达式，可以将其扩充为不仅仅适用于章节标题的表达式。不过，这可没有想象的那么直接。在使用选择时，将匹配'|' 字符每边最可能的表达式。你可能认为下面的 JScript 和 VBScript 表达式将匹配位于一行的开始和结束位置且后跟一个或两个数字的 'Chapter' 或 'Section'： <br /><br />/^Chapter|Section [1-9][0-9]{0,1}$/<br /><br />&quot;^Chapter|Section [1-9][0-9]{0,1}$&quot;<br /><br />&nbsp;&nbsp; 不幸的是，真正的情况是上面所示的正则表达式要么匹配位于一行开始处的单词 'Chapter'，要么匹配一行结束处的后跟任何数字的 'Section'。如果输入字符串为 'Chapter 22'，上面的表达式将只匹配单词 'Chapter'。如果输入字符串为 'Section 22'，则该表达式将匹配 'Section 22'。但这种结果不是我们此处的目的，因此必须有一种办法来使正则表达式对于所要做的更易于响应，而且确实也有这种方法。<br /><br />&nbsp;&nbsp; 可以使用圆括号来限制选择的范围，也就是说明确该选择只适用于这两个单词 'Chapter' 和 'Section'。不过，圆括号同样也是难处理的，因为它们也用来创建子表达式，有些内容将在后面关于子表达式的部分介绍。通过采用上面所示的正则表达式并在适当位置添加圆括号，就可以使该正则表达式既可以匹配 'Chapter 1'，也可以匹配 'Section 3'。<br /><br />&nbsp; 下面的正则表达式使用圆括号将 'Chapter' 和 'Section' 组成一组，所以该表达式才能正确工作。对 JScript 为：<br /><br />/^(Chapter|Section) [1-9][0-9]{0,1}$/对 VBScript 为&quot;^(Chapter|Section) [1-9][0-9]{0,1}$&quot;<br /><br />&nbsp;&nbsp; 这些表达式工作正确，只是产生了一个有趣的副产品。在 'Chapter|Section' 两边放置圆括号建立了适当的编组，但也导致两个待匹配单词之一都被捕获供今后使用。由于在上面所示的表达式中只有一组圆括号，因此只能有一个捕获的 submatch。可以使用 VBScript 的Submatches 集合或者JScript 中RegExp 对象的 $1-$9 属性来引用这个子匹配。<br /><br />&nbsp;&nbsp; 有时捕获一个子匹配是所希望的，有时则是不希望的。在说明所示的示例中，真正想做的就是使用圆括号对单词 'Chapter' 或 'Section' 之间的选择编组。并不希望在后面再引用该匹配。实际上，除非真的是需要捕获子匹配，否则请不要使用。由于不需要花时间和内存来存储那些子匹配，这种正则表达式的效率将更高。<br /><br />&nbsp;&nbsp; 可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript：<br /><br />/^(?:Chapter|Section) [1-9][0-9]{0,1}$/对 VBScript为&quot;^(?:Chapter|Section) [1-9][0-9]{0,1}$&quot;<br /><br />&nbsp;&nbsp; 除了 '?:' 元字符，还有两个非捕获元字符用于称之为预查的匹配。一个为正向预查，用 ?= 表示， 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。一个为负向预查，用 '?!' 表示，在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。<br /><br />&nbsp;&nbsp; 例如，假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档，方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用，并将这些引用更改为 Windows 2000。可以使用下面的 JScript 正则表达式，这是一个正向预查，来匹配 Windows 95、Windows 98 以及 Windows NT：<br /><br />/Windows(?=95 |98 |NT )/<br /><br />在 VBScript 要进行同样的匹配可以使用下述表达式：<br /><br />&quot;Windows(?=95 |98 |NT )&quot;<br /><br />找到一个匹配后，紧接匹配到的文字（而不包括预查中使用的字符）就开始对下一次匹配的搜索。例如，如果上面所示的表达式匹配到 'Windows 98'，则将从 'Windows' 而不是 '98' 之后继续查找。<br /><br /><strong>&nbsp; 向后引用</strong><br /><br />&nbsp; 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下，对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存。<br /><br />&nbsp; 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始，连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\<em>n</em>' 访问，其中 <em>n</em> 为一个标识特定缓冲区的一位或两位十进制数。<br /><br />向后引用一个最简单，最有用的应用是提供了确定文字中连续出现两个相同单词的位置的能力。请看下面的句子：<br /><br /></p>
<pre>Is is the cost of of gasoline going up up?</pre>
<p>&nbsp;&nbsp; 根据所写内容，上面的句子明显存在单词多次重复的问题。如果能有一种方法无需查找每个单词的重复现象就能修改该句子就好了。下面的 JScript 正则表达式使用一个子表达式就可以实现这一功能。<br /><br /></p>
<pre>/\b([a-z]+) \1\b/gi</pre>
<p>等价的 VBScript 表达式为：<br /><br /></p>
<pre>&quot;\b([a-z]+) \1\b&quot;</pre>
<p>&nbsp;&nbsp; 在这个示例中，子表达式就是圆括号之间的每一项。所捕获的表达式包括一个或多个字母字符，即由'[a-z]+' 所指定的。该正则表达式的第二部分是对前面所捕获的子匹配的引用，也就是由附加表达式所匹配的第二次出现的单词。'\1'用来指定第一个子匹配。单词边界元字符确保只检测单独的单词。如果不这样，则诸如 &quot;is issued&quot; 或 &quot;this is&quot; 这样的短语都会被该表达式不正确地识别。<br /><br />&nbsp;&nbsp; 在 JScript 表达式中，正则表达式后面的全局标志 ('g') 表示该表达式将用来在输入字符串中查找尽可能多的匹配。大小写敏感性由表达式结束处的大小写敏感性标记 ('i') 指定。多行标记指定可能出现在换行符的两端的潜在匹配。对 VBScript 而言，在表达式中不能设置各种标记，但必须使用 <strong>RegExp</strong> 对象的属性来显式设置。<br /><br />&nbsp;&nbsp; 使用上面所示的正则表达式，下面的 JScript 代码可以使用子匹配信息，在一个文字字符串中将连续出现两次的相同单词替换为一个相同的单词：<br /><br /></p>
<pre>var ss = &quot;Is is the cost of of gasoline going up up?.\n&quot;;
var re = /\b([a-z]+) \1\b/gim;       //创建正则表达式样式。
var rv = ss.replace(re,&quot;$1&quot;);   //用一个单词替代两个单词。</pre>
<p>&nbsp;&nbsp; 最接近的等价 VBScript 代码如下：<br /><br /></p>
<pre>Dim ss, re, rv
ss = &quot;Is is the cost of of gasoline going up up?.&quot; &amp; vbNewLine
Set re = New RegExp
re.Pattern = &quot;\b([a-z]+) \1\b&quot;
re.Global = True
re.IgnoreCase = True
re.MultiLine = True
rv = re.Replace(ss,&quot;$1&quot;)</pre>
<p>&nbsp;&nbsp; 请注意在 VBScript 代码中，全局、大小写敏感性以及多行标记都是使用 <strong>RegExp</strong> 对象的适当属性来设置的。<br /><br />&nbsp;&nbsp; 在<strong>replace</strong> 方法中使用 <strong>$1</strong> 来引用所保存的第一个子匹配。如果有多个子匹配，则可以用 <strong>$2</strong>, <strong>$3 </strong>等继续引用。<br /><br />&nbsp;&nbsp; 向后引用的另一个用途是将一个通用资源指示符 (URI) 分解为组件部分。假定希望将下述的URI 分解为协议 (ftp, http, etc)，域名地址以及页面/路径：<br /><br /></p>
<pre>http://msdn.microsoft.com:80/scripting/default.htm</pre>
<p>下面的正则表达式可以提供这个功能。对 JScript，为：<br /><br /></p>
<pre>/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/</pre>
<p>对 VBScript 为：<br /><br /></p>
<pre>&quot;(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)&quot;</pre>
<p>&nbsp;&nbsp; 第一个附加子表达式是用来捕获该 web 地址的协议部分。该子表达式匹配位于一个冒号和两个正斜杠之前的任何单词。第二个附加子表达式捕获该地址的域名地址。该子表达式匹配不包括 '^'、 '/' 或 ':' 字符的任何字符序列。第三个附加子表达式捕获网站端口号码，如果指定了该端口号。该子表达式匹配后跟一个冒号的零或多个数字。最后，第四个附加子表达式捕获由该 web 地址指定的路径以及\或者页面信息。该子表达式匹配一个和多个除'#' 或空格之外的字符。<br /><br />&nbsp;&nbsp; 将该正则表达式应用于上面所示的 URI 后，子匹配包含下述内容： </p>
<ul>
    <li><strong>RegExp.$1</strong> 包含 &quot;http&quot; </li>
    <li><strong>RegExp.$2</strong> 包含 &quot;msdn.microsoft.com&quot; </li>
    <li><strong>RegExp.$3</strong> 包含 &quot;:80&quot; </li>
    <li><strong>RegExp.$4</strong> 包含 &quot;/scripting/default.htm&quot; </li>
</ul>]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=65</link>
			<title><![CDATA[常用ASP函数封装]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[技术文档]]></category>
			<pubDate>Thu,21 Feb 2008 07:49:21 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=65</guid>	
		<description><![CDATA[&lt;%<br/>&#39;所有功能函数名如下：<br/>&#39; StrLength(str) 取得字符串长度<br/>&#39; CutStr(str,strlen) 字符串长度切割<br/>&#39; CheckIsEmpty(tstr) 检测是否为空<br/>&#39; isInteger(para) 整数检验<br/>&#39; CheckName(str) 名字字符校验<br/>&#39; CheckPassword(str) 密码检验<br/>&#39; CheckEmail(email) 邮箱格式检验<br/>&#39; Alert(msg,goUrl) 弹出对话框提示<br/>&#39; GoBack(Str1,Str2,isback) 出错信息提示<br/>&#39; Suc(str1,str2,url) 操作成功信息提示<br/>&#39; ChkPost() 检测是否站外提交表单<br/>&#39; PSql() 防止sql注入<br/>&#39; FiltrateHtmlCode(Str) 防止生成HTML<br/>&#39; HtmlCode(str) 过滤HTML<br/>&#39; Replacehtml(tstr) 清滤HTML<br/>&#39; GetIP() 获取客户端IP<br/>&#39; GetBrowser 获取客户端浏览器信<br/>&#39; GetSystem 获取客户端操作系统<br/>&#39; GetUrl() 获取当前页面URL包含参数<br/>&#39; CUrl()&nbsp;&nbsp; 获取当前页面URL<br/>&#39; GetExtend 取得文件扩展名<br/>&#39; CheckExist(table,fieldname,fieldcontent,isblur) 检测某个表中某个字段的内容是否存在<br/>&#39; GetNum(table,fieldname,resulttype,args) 检测某个表某个字段有多少条，最大值 ，最小值等<br/>&#39; GetFolderSize(Folderpath) 计算某个文件夹的大小<br/>&#39; GetFileSize(Filename) 计算某个文件的大小<br/>&#39; IsObjInstalled(strClassString) 检测组件是否安装<br/>&#39; SendMail JMAIL发送邮件<br/>&#39; ResponseCookies 写入cookies<br/>&#39; CleanCookies 清除cookies<br/>&#39; GetTimeover 取得程序页面执行时间<br/>&#39; FormatSize 大小格式化<br/>&#39; FormatTime 时间格式化<br/>&#39; Zodiac 取得生肖<br/>&#39; Constellation&nbsp;&nbsp; 取得星座<br/>&#39;－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br/><br/>Class Cls_fun<br/><br/>&#39;－－－－－－－－字符处理－－－－－－－－－－－－－－－－－－－－－－－－－－<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/> &#39;****************************************************<br/> &#39;函数名：StrLength<br/> &#39;作&nbsp;&nbsp;用：取得字符串长度（汉字为2)<br/> &#39;参&nbsp;&nbsp;数：str ----字符串内容<br/> &#39;返回值：字符串长度<br/> &#39;****************************************************<br/> Public function StrLength(str)<br/>&nbsp;&nbsp; Dim Rep,lens,i<br/>&nbsp;&nbsp; Set rep=new regexp<br/>&nbsp;&nbsp; rep.Global=true<br/>&nbsp;&nbsp; rep.IgnoreCase=true<br/>&nbsp;&nbsp; rep.Pattern=&#34;[\u4E00-\u9FA5\uF900-\uFA2D]&#34;<br/>&nbsp;&nbsp; For each i in rep.Execute(str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;lens=lens+1<br/>&nbsp;&nbsp; Next<br/>&nbsp;&nbsp; Set Rep=Nothing<br/>&nbsp;&nbsp; lens=lens + len(str)<br/>&nbsp;&nbsp; strLength=lens<br/>&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;<br/> &#39;****************************************************<br/> &#39;函数名：CutStr<br/> &#39;作&nbsp;&nbsp;用：字符串长度切割，超过显示省略号<br/> &#39;参&nbsp;&nbsp;数：str&nbsp;&nbsp;&nbsp;&nbsp;----字符串内容<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strlen ------要显示的长度<br/> &#39;返回值：切割后字符串内容<br/> &#39;****************************************************<br/> Public Function CutStr(str,strlen)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim l,t,i,c<br/>&nbsp;&nbsp;&nbsp;&nbsp; If str=&#34;&#34; Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; cutstr=&#34;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp; Exit Function<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp; str=Replace(Replace(Replace(Replace(Replace(str,&#34;&amp;nbsp;&#34;,&#34; &#34;),&#34;&amp;quot;&#34;,Chr(34)),&#34;&amp;gt;&#34;,&#34;&gt;&#34;),&#34;&amp;lt;&#34;,&#34;&lt;&#34;),&#34;|&#34;,&#34;|&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; l=Len(str)<br/>&nbsp;&nbsp;&nbsp;&nbsp; t=0<br/>&nbsp;&nbsp;&nbsp;&nbsp; For i=1 To l<br/>&nbsp;&nbsp;&nbsp;&nbsp; c=Abs(Asc(Mid(str,i,1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; If c&gt;255 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;t=t+2<br/>&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;t=t+1<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp; If t&gt;=strlen Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;cutstr=Left(str,i) &amp; &#34;...&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Exit For<br/>&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;cutstr=str<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp; cutstr=Replace(Replace(Replace(Replace(replace(cutstr,&#34; &#34;,&#34;&amp;nbsp;&#34;),Chr(34),&#34;&amp;quot;&#34;),&#34;&gt;&#34;,&#34;&amp;gt;&#34;),&#34;&lt;&#34;,&#34;&amp;lt;&#34;),&#34;|&#34;,&#34;|&#34;)<br/>&nbsp;&nbsp;End Function<br/><br/>&#39;－－－－－－－－－－－－－－系列验证－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：CheckIsEmpty<br/> &#39;作&nbsp;&nbsp;用：检查是否为空<br/> &#39;参&nbsp;&nbsp;数：tstr ----字符串<br/> &#39;返回值：true不为空，false为空<br/> &#39;****************************************************<br/> Public Function CheckIsEmpty(tstr)<br/>&nbsp;&nbsp;CheckIsEmpty=false<br/>&nbsp;&nbsp;If IsNull(tstr) o&#114; Tstr=&#34;&#34; Then Exit Function <br/>&nbsp;&nbsp;Dim Str,re<br/>&nbsp;&nbsp;Str=Tstr<br/>&nbsp;&nbsp;Set re=new RegExp<br/>&nbsp;&nbsp;re.IgnoreCase =True<br/>&nbsp;&nbsp;re.Global=True<br/>&nbsp;&nbsp;str= Replace(str, vbNewLine, &#34;&#34;)<br/>&nbsp;&nbsp;str = Replace(str, Chr(9), &#34;&#34;)<br/>&nbsp;&nbsp;str = Replace(str, &#34; &#34;, &#34;&#34;)<br/>&nbsp;&nbsp;str = Replace(str, &#34;&amp;nbsp;&#34;, &#34;&#34;)<br/>&nbsp;&nbsp;re.Pattern=&#34;&lt;img(.[^&gt;]*)&gt;&#34;<br/>&nbsp;&nbsp;str =re.Replace(Str,&#34;94kk&#34;)<br/>&nbsp;&nbsp;re.Pattern=&#34;&lt;(.[^&gt;]*)&gt;&#34;<br/>&nbsp;&nbsp;Str=re.Replace(Str,&#34;&#34;)<br/>&nbsp;&nbsp;Set Re=Nothing<br/>&nbsp;&nbsp;If Str&lt;&gt;&#34;&#34; Then CheckIsEmpty=true<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：isInteger<br/> &#39;作&nbsp;&nbsp;用：整数检验<br/> &#39;参&nbsp;&nbsp;数：tstr ----字符<br/> &#39;返回值：true是整数，false不是整数<br/> &#39;****************************************************<br/> Public function isInteger(para)<br/>&nbsp;&nbsp;&nbsp;&nbsp; on error resume Next<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim str<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim l,i<br/>&nbsp;&nbsp;&nbsp;&nbsp; If isNUll(para) then <br/>&nbsp;&nbsp;&nbsp;&nbsp; isInteger=false<br/>&nbsp;&nbsp;&nbsp;&nbsp; exit function<br/>&nbsp;&nbsp;&nbsp;&nbsp; End if<br/>&nbsp;&nbsp;&nbsp;&nbsp; str=cstr(para)<br/>&nbsp;&nbsp;&nbsp;&nbsp; If trim(str)=&#34;&#34; then<br/>&nbsp;&nbsp;&nbsp;&nbsp; isInteger=false<br/>&nbsp;&nbsp;&nbsp;&nbsp; exit function<br/>&nbsp;&nbsp;&nbsp;&nbsp; End if<br/>&nbsp;&nbsp;&nbsp;&nbsp; l=len(str)<br/>&nbsp;&nbsp;&nbsp;&nbsp; For i=1 to l<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If mid(str,i,1)&gt;&#34;9&#34; o&#114; mid(str,i,1)&lt;&#34;0&#34; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInteger=false <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End if<br/>&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp; isInteger=true<br/>&nbsp;&nbsp;&nbsp;&nbsp; If err.number&lt;&gt;0 then err.clear<br/> End Function<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：CheckName<br/> &#39;作&nbsp;&nbsp;用：名字字符检验 <br/> &#39;参&nbsp;&nbsp;数：str ----字符串<br/> &#39;返回值：true无误，false有误<br/> &#39;****************************************************<br/> Public Function CheckName(Str)<br/>&nbsp;&nbsp;Checkname=true<br/>&nbsp;&nbsp;Dim Rep,pass<br/>&nbsp;&nbsp;Set Rep=New RegExp<br/>&nbsp;&nbsp;Rep.Global=True<br/>&nbsp;&nbsp;Rep.IgnoreCase=True<br/>&nbsp;&nbsp;&#39;匹配字母、数字、下划线、汉字且必须以字母或下划线或汉字开始<br/>&nbsp;&nbsp;Rep.Pattern=&#34;^[a-zA-Z_u4e00-\u9fa5][\w\u4e00-\u9fa5]+$&#34;<br/>&nbsp;&nbsp;Set pass=Rep.Execute(Str)<br/>&nbsp;&nbsp;If pass.count=0 Then CheckName=false<br/>&nbsp;&nbsp;Set Rep=Nothing<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：CheckPassword<br/> &#39;作&nbsp;&nbsp;用：密码检验<br/> &#39;参&nbsp;&nbsp;数：str ----字符串<br/> &#39;返回值：true无误，false有误<br/> &#39;****************************************************<br/> Public Function CheckPassword(Str)<br/>&nbsp;&nbsp;Dim pass<br/>&nbsp;&nbsp;CheckPassword=true<br/>&nbsp;&nbsp;If Str &lt;&gt; &#34;&#34; Then<br/>&nbsp;&nbsp; Dim Rep<br/>&nbsp;&nbsp; Set Rep = New RegExp<br/>&nbsp;&nbsp; Rep.Global = True<br/>&nbsp;&nbsp; Rep.IgnoreCase = True<br/>&nbsp;&nbsp; &#39;匹配字母、数字、下划线、点号<br/>&nbsp;&nbsp; Rep.Pattern=&#34;[a-zA-Z0-9_\.]+$&#34;<br/>&nbsp;&nbsp; Pass=rep.Test(Str)<br/>&nbsp;&nbsp; Set Rep=nothing<br/>&nbsp;&nbsp; If not Pass Then CheckPassword=false<br/>&nbsp;&nbsp; End If<br/> End Function <br/> <br/> &#39;****************************************************<br/> &#39;函数名：CheckEmail<br/> &#39;作&nbsp;&nbsp;用：邮箱格式检测<br/> &#39;参&nbsp;&nbsp;数：str ----Email地址<br/> &#39;返回值：true无误，false有误<br/> &#39;****************************************************<br/> Public function CheckEmail(email)<br/>&nbsp;&nbsp;&nbsp;&nbsp; CheckEmail=true<br/>&nbsp;&nbsp;Dim Rep<br/>&nbsp;&nbsp;Set Rep = new RegExp<br/>&nbsp;&nbsp;rep.pattern=&#34;([\.a-zA-Z0-9_-]){2,10}@([a-zA-Z0-9_-]){2,10}(\.([a-zA-Z0-9]){2,}){1,4}$&#34;<br/>&nbsp;&nbsp;pass=rep.Test(email)<br/>&nbsp;&nbsp;Set Rep=Nothing<br/>&nbsp;&nbsp;If not pass Then CheckEmail=false<br/> End function<br/><br/>&#39;－－－－－－－－－－－－－－信息提示－－－－－－－－－－－－－－－－－－－－－－－－－－－－&nbsp;&nbsp;<br/> &#39;****************************************************<br/> &#39;函数名：Alert<br/> &#39;作&nbsp;&nbsp;用：弹出对话框提示<br/> &#39;参&nbsp;&nbsp;数：msg&nbsp;&nbsp; ----对话框信息<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gourl ----提示后转向哪里<br/> &#39;返回值：无<br/> &#39;****************************************************<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function Alert(msg,goUrl)<br/>&nbsp;&nbsp;msg = replace(msg,&#34;&#39;&#34;,&#34;\&#39;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;If goUrl=&#34;&#34; Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; goUrl=&#34;history.go(-1);&#34;<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp; goUrl=&#34;window.location.href=&#39;&#34;&amp;goUrl&amp;&#34;&#39;&#34;<br/>&nbsp;&nbsp;End IF<br/>&nbsp;&nbsp;Response.Write (&#34;&lt;script language=&#34;&#34;JavaScript&#34;&#34; type=&#34;&#34;text/javascript&#34;&#34;&gt;&#34;&amp;vbNewLine&amp;&#34;alert(&#39;&#34; &amp; msg &amp; &#34;&#39;);&#34;&amp;goUrl&amp;vbNewLine&amp;&#34;&lt;/script&gt;&#34;)<br/>&nbsp;&nbsp;Response.End<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GoBack<br/> &#39;作&nbsp;&nbsp;用：错误信息提示<br/> &#39;参&nbsp;&nbsp;数：str1&nbsp;&nbsp; ----信息提示标题<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str2&nbsp;&nbsp; ----信息提示内容<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isback ----是否显示返回<br/> &#39;返回值：无<br/> &#39;****************************************************<br/> Public Function GoBack(Str1,Str2,isback)<br/>&nbsp;&nbsp;If Str1=&#34;&#34; Then Str1=&#34;错误信息&#34;<br/>&nbsp;&nbsp;If Str2=&#34;&#34; Then Str2=&#34;请填写完整必填项目&#34;<br/>&nbsp;&nbsp;If isback=&#34;&#34; Then <br/>&nbsp;&nbsp; Str2=Str2&amp;&#34; &lt;a href=&#34;&#34;javascript:history.go(-1)&#34;&#34;&gt;返回重填&lt;/a&gt;&lt;/li&gt;&#34;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; Str2=Str2<br/>&nbsp;&nbsp;end if<br/>&nbsp;&nbsp;Response.Write&#34;&lt;div style=&#34;&#34;margin-left:5px;border:1px solid #0066cc;width:98%&#34;&#34;&gt;&lt;div style=&#34;&#34;height:22px;font-weight:bold;color : white;font-size:14px;background:#799AE1;background:url(images/th.gif);;text-align:left;line-height:20px;padding:3px;&#34;&#34;&gt;&#34;&amp;Str1&amp;&#34; &lt;/div&gt;&lt;div style=&#34;&#34;line-height:50px;background:#F7F7F7;vertical-align:middle;font-size:14px;width:100%&#34;&#34;&gt;&lt;div&nbsp;&nbsp;style=&#34;&#34;color:red;font:50px/50px 宋体;float:left;width:5%&#34;&#34;&gt;×&lt;/div&gt;&lt;div&nbsp;&nbsp;style=&#34;&#34;margin-top:8px;float:right;width:90%;text-align:left;padding-left:3px;&#34;&#34;&gt;&#34;&amp;str2&amp;&#34;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#34;<br/>&nbsp;&nbsp;response.end<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：Suc<br/> &#39;作&nbsp;&nbsp;用：成功提示信息<br/> &#39;参&nbsp;&nbsp;数：str1&nbsp;&nbsp; ----信息提示标题<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str2&nbsp;&nbsp; ----信息提示内容<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;----返回地址<br/> &#39;返回值：无<br/> &#39;****************************************************<br/> Public Function Suc(str1,str2,url)<br/>&nbsp;&nbsp;If str1=&#34;&#34; Then Str1=&#34;操作成功&#34;<br/>&nbsp;&nbsp;If str2=&#34;&#34; Then Str2=&#34;成功的完成这次操作！&#34;<br/>&nbsp;&nbsp;If url=&#34;&#34; Then url=&#34;javascript:history.go(-1)&#34;<br/>&nbsp;&nbsp;str2=str2&amp;&#34;&amp;nbsp;&amp;nbsp;&lt;a href=&#34;&#34;&#34;&amp;url&amp;&#34;&#34;&#34; &gt;返回继续管理&lt;/a&gt;&#34;<br/>&nbsp;&nbsp;Response.Write&#34;&lt;div style=&#34;&#34;margin-left:5px;border:1px solid #0066cc;width:98%&#34;&#34;&gt;&lt;div style=&#34;&#34;height:22px;font-weight:bold;color : white;font-size:14px;background:#799AE1;background:url(images/th.gif);;text-align:left;line-height:20px;padding:3px;&#34;&#34;&gt;&#34;&amp;Str1&amp;&#34; &lt;/div&gt;&lt;div style=&#34;&#34;line-height:50px;background:#F7F7F7;vertical-align:middle;font-size:14px;width:100%&#34;&#34;&gt;&lt;div&nbsp;&nbsp;style=&#34;&#34;color:red;font:50px/50px 宋体;float:left;width:5%&#34;&#34;&gt;√&lt;/div&gt;&lt;div&nbsp;&nbsp;style=&#34;&#34;margin-top:8px;float:right;width:90%;text-align:left;padding-left:3px;&#34;&#34;&gt;&#34;&amp;str2&amp;&#34;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#34;<br/> End Function<br/> <br/>&#39;－－－－－－－－－－－－－－安全处理－－－－－－－－－－－－－－－－－－－－－－－－－－－－ <br/><br/> &#39;****************************************************<br/> &#39;函数名：ChkPost<br/> &#39;作&nbsp;&nbsp;用：禁止站外提交表单<br/> &#39;返回值：true站内提交，flase站外提交<br/> &#39;****************************************************<br/> Public Function ChkPost()<br/>&nbsp;&nbsp;Dim url1,url2<br/>&nbsp;&nbsp;chkpost=true<br/>&nbsp;&nbsp;url1=Cstr(Request.ServerVariables(&#34;HTTP_REFERER&#34;))<br/>&nbsp;&nbsp;url2=Cstr(Request.ServerVariables(&#34;SERVER_NAME&#34;))<br/>&nbsp;&nbsp;If Mid(url1,8,Len(url2))&lt;&gt;url2 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;chkpost=false<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit function<br/>&nbsp;&nbsp;End If<br/> End function<br/><br/> &#39;****************************************************<br/> &#39;函数名：PSql<br/> &#39;作&nbsp;&nbsp;用：防止SQL注入<br/> &#39;返回值：为空则无注入，不为空则注入并返回注入的字符<br/> &#39;****************************************************<br/> public Function PSql()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Psql=&#34;&#34;<br/>&nbsp;&nbsp;badwords= &#34;&#39;防&#39;&#39;防;防and防exec防ins&#101;rt防sel&#101;ct防up&#100;ate防del&#101;te防count防*防%防chr防mid防master防truncate防char防declare防|&#34;<br/>&nbsp;&nbsp;badword=split(badwords,&#34;防&#34;)<br/>&nbsp;&nbsp;If Request.Form&lt;&gt;&#34;&#34; Then<br/>&nbsp;&nbsp; For Each TF_Post In Request.Form<br/>&nbsp;&nbsp;&nbsp;&nbsp;For i=0 To Ubound(badword)<br/>&nbsp;&nbsp;&nbsp;&nbsp; If Instr(LCase(Request.Form(TF_Post)),badword(i))&gt;0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Psql=badword(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit function<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;If Request.QueryString&lt;&gt;&#34;&#34; Then<br/>&nbsp;&nbsp; For Each TF_Get In Request.QueryString<br/>&nbsp;&nbsp;&nbsp;&nbsp;For i=0 To Ubound(badword)<br/>&nbsp;&nbsp;&nbsp;&nbsp; If Instr(LCase(Request.QueryString(TF_Get)),badword(i))&gt;0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Psql=badword(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit function<br/>&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;Next<br/>&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;End If<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：FiltrateHtmlCode<br/> &#39;作&nbsp;&nbsp;用：防止生成html代码 <br/> &#39;参&nbsp;&nbsp;数：str ----字符串<br/> &#39;****************************************************<br/> Public Function FiltrateHtmlCode(Str)<br/>&nbsp;&nbsp;If Not isnull(str) And str&lt;&gt;&#34;&#34; then<br/>&nbsp;&nbsp; Str=Replace(Str,Chr(9),&#34;&#34;)<br/>&nbsp;&nbsp; Str=replace(Str,&#34;|&#34;,&#34;|&#34;)<br/>&nbsp;&nbsp; Str=replace(Str,chr(39),&#34;&#39;&#34;)<br/>&nbsp;&nbsp; Str=replace(Str,&#34;&lt;&#34;,&#34;&amp;lt;&#34;)<br/>&nbsp;&nbsp; Str=replace(Str,&#34;&gt;&#34;,&#34;&amp;gt;&#34;)<br/>&nbsp;&nbsp; Str = Replace(str, CHR(13),&#34;&#34;)<br/>&nbsp;&nbsp; Str = Replace(str, CHR(10),&#34;&#34;)<br/>&nbsp;&nbsp; FiltrateHtmlCode=Str<br/>&nbsp;&nbsp;End If<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：HtmlCode<br/> &#39;作&nbsp;&nbsp;用：过滤Html标签<br/> &#39;参&nbsp;&nbsp;数：str ----字符串<br/> &#39;****************************************************<br/> Public function HtmlCode(str)<br/>&nbsp;&nbsp;If Not isnull(str) And str&lt;&gt;&#34;&#34; then<br/>&nbsp;&nbsp; str = replace(str, &#34;&gt;&#34;, &#34;&amp;gt;&#34;)<br/>&nbsp;&nbsp; str = replace(str, &#34;&lt;&#34;, &#34;&amp;lt;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(32), &#34; &#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(9), &#34;&amp;nbsp;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(34), &#34;&amp;quot;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(39), &#34;&#39;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(13), &#34;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, CHR(10), &#34;&#34;)<br/>&nbsp;&nbsp; str = Replace(str, &#34;script&#34;, &#34;script&#34;)<br/>&nbsp;&nbsp; HtmlCode = str<br/>&nbsp;&nbsp;End If<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：Replacehtml<br/> &#39;作&nbsp;&nbsp;用：清理html<br/> &#39;参&nbsp;&nbsp;数：tstr ----字符串<br/> &#39;****************************************************<br/> Public Function Replacehtml(tstr)<br/>&nbsp;&nbsp;Dim Str,re<br/>&nbsp;&nbsp;Str=Tstr<br/>&nbsp;&nbsp;Set re=new RegExp<br/>&nbsp;&nbsp; re.IgnoreCase =True<br/>&nbsp;&nbsp; re.Global=True<br/>&nbsp;&nbsp; re.Pattern=&#34;&lt;(p|\/p|br)&gt;&#34;<br/>&nbsp;&nbsp; Str=re.Replace(Str,vbNewLine)<br/>&nbsp;&nbsp; re.Pattern=&#34;&lt;img.[^&gt;]*src(=| )(.[^&gt;]*)&gt;&#34;<br/>&nbsp;&nbsp; str=re.replace(str,&#34;<img src="http://www.suqingyang.com/$2" border="0" alt=""/>&#34;)<br/>&nbsp;&nbsp; re.Pattern=&#34;&lt;(.[^&gt;]*)&gt;&#34;<br/>&nbsp;&nbsp; Str=re.Replace(Str,&#34;&#34;)<br/>&nbsp;&nbsp; Set Re=Nothing<br/>&nbsp;&nbsp; Replacehtml=Str<br/> End Function<br/><br/><br/>&#39;－－－－－－－－－－－－－－－获取客户端和服务端的一些信息－－－－－－－－－－－－－－－－－－－<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GetIP<br/> &#39;作&nbsp;&nbsp;用：获取客户端IP地址<br/> &#39;返回值：客户端IP地址<br/> &#39;****************************************************<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function GetIP()<br/>&nbsp;&nbsp;Dim Temp<br/>&nbsp;&nbsp;Temp = Request.ServerVariables(&#34;HTTP_X_FORWARDED_FOR&#34;)<br/>&nbsp;&nbsp;If Temp = &#34;&#34; o&#114; isnull(Temp) o&#114; isEmpty(Temp) Then Temp = Request.ServerVariables(&#34;REMOTE_ADDR&#34;)<br/>&nbsp;&nbsp;If Instr(Temp,&#34;&#39;&#34;)&gt;0 Then Temp=&#34;0.0.0.0&#34;<br/>&nbsp;&nbsp;GetIP = Temp<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GetBrowser<br/> &#39;作&nbsp;&nbsp;用：获取客户端浏览器信息<br/> &#39;返回值：客户端浏览器信息<br/> &#39;****************************************************<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function GetBrowser()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info=Request.ServerVariables(HTTP_USER_AGENT) <br/>&nbsp;&nbsp;if Instr(info,&#34;NetCaptor 6.5.0&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;NetCaptor 6.5.0&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MyIe 3.1&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;MyIe 3.1&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;NetCaptor 6.5.0RC1&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;NetCaptor 6.5.0RC1&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;NetCaptor 6.5.PB1&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;NetCaptor 6.5.PB1&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 5.5&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 5.5&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 6.0&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 6.0&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 6.0b&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 6.0b&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 5.01&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 5.01&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 5.0&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 5.00&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;MSIE 4.0&#34;)&gt;0 then<br/>&nbsp;&nbsp; browser=&#34;Internet Explorer 4.01&#34;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; browser=&#34;其它&#34;<br/>&nbsp;&nbsp;end if<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GetSystem<br/> &#39;作&nbsp;&nbsp;用：获取客户端操作系统<br/> &#39;返回值：客户端操作系统<br/> &#39;****************************************************<br/>&nbsp;&nbsp;&nbsp;&nbsp;Function GetSystem()<br/>&nbsp;&nbsp;&nbsp;&nbsp; info=Request.ServerVariables(HTTP_USER_AGENT) <br/>&nbsp;&nbsp;if Instr(info,&#34;NT 5.1&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Windows XP&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;Tel&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Telport&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;webzip&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;webzip&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;flashget&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;flashget&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;offline&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;offline&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;NT 5&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Windows 2000&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;NT 4&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Windows NT4&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;98&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Windows 98&#34;<br/>&nbsp;&nbsp;elseif Instr(info,&#34;95&#34;)&gt;0 then<br/>&nbsp;&nbsp; system=&#34;Windows 95&#34;<br/>&nbsp;&nbsp;elseif instr(info,&#34;unix&#34;) o&#114; instr(info,&#34;linux&#34;) o&#114; instr(info,&#34;SunOS&#34;) o&#114; instr(info,&#34;BSD&#34;) then<br/>&nbsp;&nbsp; system=&#34;类Unix&#34;<br/>&nbsp;&nbsp;elseif instr(thesoft,&#34;Mac&#34;) then<br/>&nbsp;&nbsp; system=&#34;Mac&#34;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; system=&#34;其它&#34;<br/>&nbsp;&nbsp;end if<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：GetUrl<br/> &#39;作&nbsp;&nbsp;用：获取url包括参数<br/> &#39;返回值：获取url包括参数<br/> &#39;****************************************************<br/> Public Function GetUrl()&nbsp;&nbsp; <br/>&nbsp;&nbsp;Dim strTemp&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;strTemp=Request.ServerVariables(&#34;Script_Name&#34;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;If&nbsp;&nbsp;Trim(Request.QueryString)&lt;&gt; &#34;&#34; Then<br/>&nbsp;&nbsp; strTemp=strTemp&amp;&#34;?&#34;<br/>&nbsp;&nbsp; For Each M_item In Request.QueryString<br/>&nbsp;&nbsp;&nbsp;&nbsp;strTemp=strTemp&amp;M_item&amp;&#34;=&#34;&amp;Server.UrlEncode(Trim(Request.QueryString(&#34;&#34;&amp;M_item&amp;&#34;&#34;)))<br/>&nbsp;&nbsp; next<br/>&nbsp;&nbsp;end if<br/>&nbsp;&nbsp;GetUrl=strTemp&nbsp;&nbsp; <br/> End Function <br/><br/> &#39;****************************************************<br/> &#39;函数名：CUrl<br/> &#39;作&nbsp;&nbsp;用：获取当前页面URL的函数<br/> &#39;返回值：当前页面URL的函数<br/> &#39;****************************************************<br/> Function CUrl()<br/>&nbsp;&nbsp;Domain_Name = LCase(Request.ServerVariables(&#34;Server_Name&#34;))<br/>&nbsp;&nbsp;Page_Name = LCase(Request.ServerVariables(&#34;Script_Name&#34;))<br/>&nbsp;&nbsp;Quary_Name = LCase(Request.ServerVariables(&#34;Quary_String&#34;))<br/>&nbsp;&nbsp;If Quary_Name =&#34;&#34; Then<br/>&nbsp;&nbsp; CUrl = &#34;<a href="http://" target="_blank">http://</a>&#34;&amp;Domain_Name&amp;Page_Name<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp; CUrl = &#34;<a href="http://" target="_blank">http://</a>&#34;&amp;Domain_Name&amp;Page_Name&amp;&#34;?&#34;&amp;Quary_Name<br/>&nbsp;&nbsp;End If<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GetExtend<br/> &#39;作&nbsp;&nbsp;用：取得文件扩展名<br/> &#39;参&nbsp;&nbsp;数：filename ----文件名<br/> &#39;****************************************************<br/> Public Function GetExtend(filename)<br/>&nbsp;&nbsp;dim tmp<br/>&nbsp;&nbsp;if filename&lt;&gt;&#34;&#34; then<br/>&nbsp;&nbsp; tmp=mid(filename,instrrev(filename,&#34;.&#34;)+1,len(filename)-instrrev(filename,&#34;.&#34;))<br/>&nbsp;&nbsp; tmp=LCase(tmp)<br/>&nbsp;&nbsp; if instr(1,tmp,&#34;asp&#34;)&gt;0 o&#114; instr(1,tmp,&#34;php&#34;)&gt;0 o&#114; instr(1,tmp,&#34;php3&#34;)&gt;0 o&#114; instr(1,tmp,&#34;aspx&#34;)&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;getextend=&#34;txt&#34;<br/>&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;getextend=tmp<br/>&nbsp;&nbsp; end if<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; getextend=&#34;&#34;<br/>&nbsp;&nbsp;end if<br/> End Function<br/>&#39;－－－－－－－－－－－－－－－－－－数据库的操作－－－－－－－－－－－－－－－－－－－－－－－<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：CheckExist<br/> &#39;作&nbsp;&nbsp;用：检测某个表中某个字段是否存在某个内容<br/> &#39;参&nbsp;&nbsp;数：table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----表名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldname&nbsp;&nbsp;&nbsp;&nbsp;----字段名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldcontent ----字段内容<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isblur&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----是否模糊匹配<br/> &#39;返回值：false不存在，true存在<br/> &#39;****************************************************<br/> Function CheckExist(table,fieldname,fieldcontent,isblur)<br/>&nbsp;&nbsp;CheckExist=false<br/>&nbsp;&nbsp;If isblur=1 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rsCheckExist=conn.execute(&#34;sel&#101;ct * from &#34;&amp;table&amp;&#34; wh&#101;re &#34;&amp;fieldname&amp;&#34; like &#39;%&#34;&amp;fieldcontent&amp;&#34;%&#39;&#34;)<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; set rsCheckExist=conn.execute(&#34;sel&#101;ct * from &#34;&amp;table&amp;&#34; wh&#101;re &#34;&amp;fieldname&amp;&#34;= &#39;&#34;&amp;fieldcontent&amp;&#34;&#39;&#34;)<br/>&nbsp;&nbsp;End if<br/>&nbsp;&nbsp;if not (rsCheckExist.eof and rsCheckExist.bof) then CheckExist=true<br/>&nbsp;&nbsp;rsCheckExist.close<br/>&nbsp;&nbsp;set rsCheckExist=nothing<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：GetNum<br/> &#39;作&nbsp;&nbsp;用：检测某个表某个字段的数量或最大值或最小值<br/> &#39;参&nbsp;&nbsp;数：table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----表名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldname&nbsp;&nbsp;----字段名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resulttype ----还回结果(count/max/min)<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----附加参加(order by ...)<br/> &#39;返回值：数值<br/> &#39;****************************************************<br/> Function GetNum(table,fieldname,resulttype,args)<br/>&nbsp;&nbsp;GetFieldContentNum=0<br/>&nbsp;&nbsp;if fieldname=&#34;&#34; then fieldname=&#34;*&#34;<br/>&nbsp;&nbsp;sqlGetFieldContentNum=&#34;sel&#101;ct &#34;&amp;resulttype&amp;&#34;(&#34;&amp;fieldname&amp;&#34;) from &#34;&amp;table&amp; args<br/>&nbsp;&nbsp;set rsGetFieldContentNum=conn.execute(sqlGetFieldContentNum) <br/>&nbsp;&nbsp;if not (rsGetFieldContentNum.eof and rsGetFieldContentNum.bof) then GetFieldContentNum=rsGetFieldContentNum(0)<br/>&nbsp;&nbsp;rsGetFieldContentNum.close<br/>&nbsp;&nbsp;set rsGetFieldContentNum=nothing<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：Up&#100;ateValue<br/> &#39;作&nbsp;&nbsp;用：更新表中某字段某内容的值<br/> &#39;参&nbsp;&nbsp;数：table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----表名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldname&nbsp;&nbsp;----字段名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldvalue ----更新后的值<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----id<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------更新后转向地址<br/> &#39;返回值：无<br/> &#39;****************************************************<br/> Public Function Up&#100;ateValue(table,fieldname,fieldvalue,id,url)<br/>&nbsp;&nbsp;conn.Execute(&#34;up&#100;ate &#34;&amp;table&amp;&#34; set &#34;&amp;fieldname&amp;&#34;=&#34;&amp;fieldvalue&amp;&#34; wh&#101;re id=&#34;&amp;CLng(trim(id)))<br/>&nbsp;&nbsp;if url&lt;&gt;&#34;&#34; then response.redirect url<br/> End Function<br/><br/>&#39;－－－－－－－－－－－－－－－服务端信息和操作－－－－－－－－－－－－－－－－－－－－－－－<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：GetFolderSize<br/> &#39;作&nbsp;&nbsp;用：计算某个文件夹的大小<br/> &#39;参&nbsp;&nbsp;数：FileName ----文件夹路径及文件夹名称<br/> &#39;返回值：数值<br/> &#39;****************************************************<br/> Public Function GetFolderSize(Folderpath)<br/>&nbsp;&nbsp;dim fso,d,size,showsize<br/>&nbsp;&nbsp;set fso=server.cr&#101;ateobject(&#34;scripting.filesystemobject&#34;)&nbsp;&nbsp; <br/>&nbsp;&nbsp;drvpath=server.mappath(Folderpath)&nbsp;&nbsp;<br/>&nbsp;&nbsp;if fso.FolderExists(drvpath) Then<br/>&nbsp;&nbsp; set d=fso.getfolder(drvpath)&nbsp;&nbsp; <br/>&nbsp;&nbsp; size=d.size<br/>&nbsp;&nbsp; GetFolderSize=FormatSize(size)<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetFolderSize=Folderpath&amp;&#34;文件夹不存在&#34;<br/>&nbsp;&nbsp;End If <br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：GetFileSize<br/> &#39;作&nbsp;&nbsp;用：计算某个文件的大小<br/> &#39;参&nbsp;&nbsp;数：FileName ----文件路径及文件名<br/> &#39;返回值：数值<br/> &#39;****************************************************<br/> Public Function GetFileSize(FileName)<br/>&nbsp;&nbsp;Dim fso,drvpath,d,size,showsize<br/>&nbsp;&nbsp;set fso=server.cr&#101;ateobject(&#34;scripting.filesystemobject&#34;)<br/>&nbsp;&nbsp;filepath=server.mappath(FileName)<br/>&nbsp;&nbsp;if fso.FileExists(filepath) then<br/>&nbsp;&nbsp; set d=fso.getfile(filepath) <br/>&nbsp;&nbsp; size=d.size<br/>&nbsp;&nbsp; GetFileSize=FormatSize(size)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetFileSize=FileName&amp;&#34;文件不存在&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;set fso=nothing<br/> End Function<br/><br/> &#39;****************************************************<br/> &#39;函数名：IsObjInstalled<br/> &#39;作&nbsp;&nbsp;用：检查组件是否安装<br/> &#39;参&nbsp;&nbsp;数：strClassString ----组件名称<br/> &#39;返回值：false不存在，true存在<br/> &#39;****************************************************<br/> Public Function IsObjInstalled(strClassString)<br/>&nbsp;&nbsp;On Error Resume Next<br/>&nbsp;&nbsp;IsObjInstalled=False<br/>&nbsp;&nbsp;Err=0<br/>&nbsp;&nbsp;Dim xTestObj<br/>&nbsp;&nbsp;Set xTestObj=Server.Cr&#101;ateObject(strClassString)<br/>&nbsp;&nbsp;If 0=Err Then IsObjInstalled=True<br/>&nbsp;&nbsp;Set xTestObj=Nothing<br/>&nbsp;&nbsp;Err=0<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：SendMail<br/> &#39;作&nbsp;&nbsp;用：用Jmail组件发送邮件<br/> &#39;参&nbsp;&nbsp;数：ServerAddress ----服务器地址<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddRecipient&nbsp;&nbsp;----收信人地址<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subject&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----主题<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Body&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----信件内容<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sender&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----发信人地址<br/> &#39;****************************************************<br/> Public function SendMail(MailServerAddress,AddRecipient,Subject,Body,Sender,MailFrom)<br/>&nbsp;&nbsp;on error resume next<br/>&nbsp;&nbsp;Dim JMail<br/>&nbsp;&nbsp;Set JMail=Server.Cr&#101;ateObject(&#34;JMail.SMTPMail&#34;)<br/>&nbsp;&nbsp;if err then<br/>&nbsp;&nbsp; SendMail= &#34;没有安装JMail组件&#34;<br/>&nbsp;&nbsp; err.clear<br/>&nbsp;&nbsp; exit function<br/>&nbsp;&nbsp;end if<br/>&nbsp;&nbsp;JMail.Logging=True<br/>&nbsp;&nbsp;JMail.Charset=&#34;gb2312&#34;<br/>&nbsp;&nbsp;JMail.ContentType = &#34;text/html&#34;<br/>&nbsp;&nbsp;JMail.ServerAddress=MailServerAddress<br/>&nbsp;&nbsp;JMail.AddRecipient=AddRecipient<br/>&nbsp;&nbsp;JMail.Subject=Subject<br/>&nbsp;&nbsp;JMail.Body=MailBody<br/>&nbsp;&nbsp;JMail.Sender=Sender<br/>&nbsp;&nbsp;JMail.From = MailFrom<br/>&nbsp;&nbsp;JMail.Priority=1<br/>&nbsp;&nbsp;JMail.Execute <br/>&nbsp;&nbsp;Set JMail=nothing <br/>&nbsp;&nbsp;if err then <br/>&nbsp;&nbsp; SendMail=err.description<br/>&nbsp;&nbsp; err.clear<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; SendMail=&#34;OK&#34;<br/>&nbsp;&nbsp;end if<br/> end function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：ResponseCookies<br/> &#39;作&nbsp;&nbsp;用：写入COOKIES<br/> &#39;参&nbsp;&nbsp;数：Key ----cookie名<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value ----cookie值<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expires ---- cookie过期时间<br/> &#39;****************************************************<br/> Public Function ResponseCookies(Key,Value,Expires)<br/>&nbsp;&nbsp;DomainPath=Left(Request.ServerVariables(&#34;script_name&#34;),inStrRev(Request.ServerVariables(&#34;script_name&#34;),&#34;/&#34;))<br/>&nbsp;&nbsp;Response.Cookies(Key)=&#34;&#34;&amp;Value&amp;&#34;&#34;<br/>&nbsp;&nbsp;if Expires&lt;&gt;0 then Response.Cookies(Key).Expires=date+Expires<br/>&nbsp;&nbsp;Response.Cookies(Key).Path=DomainPath<br/> End Function<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：CleanCookies<br/> &#39;作&nbsp;&nbsp;用：清除COOKIES<br/> &#39;****************************************************<br/> Public Function CleanCookies()<br/>&nbsp;&nbsp;DomainPath=Left(Request.ServerVariables(&#34;script_name&#34;),inStrRev(Request.ServerVariables(&#34;script_name&#34;),&#34;/&#34;))<br/>&nbsp;&nbsp;For Each objCookie In Request.Cookies<br/>&nbsp;&nbsp; Response.Cookies(objCookie)= &#34;&#34;<br/>&nbsp;&nbsp; Response.Cookies(objCookie).Path=DomainPath<br/>&nbsp;&nbsp;Next<br/> End Function<br/> <br/> &#39;****************************************************<br/> &#39;函数名：GetTimeOver<br/> &#39;作&nbsp;&nbsp;用：清除COOKIES<br/> &#39;参&nbsp;&nbsp;数：flag ---显示时间单位1=秒，否则毫秒<br/> &#39;****************************************************<br/> Public Function GetTimeOver(flag)<br/>&nbsp;&nbsp;Dim EndTime<br/>&nbsp;&nbsp;If flag = 1 Then<br/>&nbsp;&nbsp; EndTime=FormatNumber(Timer() - StartTime, 6, true)<br/>&nbsp;&nbsp; getTimeOver = &#34; 本页执行时间: &#34; &amp; EndTime &amp; &#34; 秒&#34;<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp; EndTime=FormatNumber((Timer() - StartTime) * 1000, 3, true)<br/>&nbsp;&nbsp; getTimeOver =&#34; 本页执行时间: &#34; &amp; EndTime &amp; &#34; 毫秒&#34;<br/>&nbsp;&nbsp;End If<br/> End function<br/>&#39;－－－－－－－－－－－－－－－－－系列格式化－－－－－－－－－－－－－－－－－－－－－－－－<br/><br/> &#39;****************************************************<br/> &#39;函数名：FormatSize<br/> &#39;作&nbsp;&nbsp;用：大小格式化<br/> &#39;参&nbsp;&nbsp;数：size ----要格式化的大小<br/> &#39;****************************************************<br/> Public Function FormatSize(dsize)<br/>&nbsp;&nbsp;if dsize&gt;=1073741824 then<br/>&nbsp;&nbsp; FormatSize=Formatnumber(dsize/1073741824,2) &amp; &#34; GB&#34;<br/>&nbsp;&nbsp;elseif dsize&gt;=1048576 then<br/>&nbsp;&nbsp; FormatSize=Formatnumber(dsize/1048576,2) &amp; &#34; MB&#34;<br/>&nbsp;&nbsp;elseif dsize&gt;=1024 then<br/>&nbsp;&nbsp; FormatSize=Formatnumber(dsize/1024,2) &amp; &#34; KB&#34;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp; FormatSize=dsize &amp; &#34; Byte&#34;<br/>&nbsp;&nbsp;end if<br/> End Function<br/><br/> &#39;****************************************************<br/> &#39;函数名：FormatTime<br/> &#39;作&nbsp;&nbsp;用：时间格式化<br/> &#39;参&nbsp;&nbsp;数：DateTime ----要格式化的时间<br/> &#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Format&nbsp;&nbsp; ----格式的形式<br/> &#39;****************************************************<br/> Public Function FormatTime(DateTime,Format) <br/>&nbsp;&nbsp;sel&#101;ct case Format<br/>&nbsp;&nbsp;case &#34;1&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;FormatTime=&#34;&#34;&amp;year(DateTime)&amp;&#34;年&#34;&amp;month(DateTime)&amp;&#34;月&#34;&amp;day(DateTime)&amp;&#34;日&#34;<br/>&nbsp;&nbsp;case &#34;2&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;FormatTime=&#34;&#34;&amp;month(DateTime)&amp;&#34;月&#34;&amp;day(DateTime)&amp;&#34;日&#34;<br/>&nbsp;&nbsp;case &#34;3&#34; <br/>&nbsp;&nbsp;&nbsp;&nbsp;FormatTime=&#34;&#34;&amp;year(DateTime)&amp;&#34;/&#34;&amp;month(DateTime)&amp;&#34;/&#34;&amp;day(DateTime)&amp;&#34;&#34;<br/>&nbsp;&nbsp;case &#34;4&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;FormatTime=&#34;&#34;&amp;month(DateTime)&amp;&#34;/&#34;&amp;day(DateTime)&amp;&#34;&#34;<br/>&nbsp;&nbsp;case &#34;5&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;FormatTime=&#34;&#34;&amp;month(DateTime)&amp;&#34;月&#34;&amp;day(DateTime)&amp;&#34;日&#34;&amp;FormatDateTime(DateTime,4)&amp;&#34;&#34;<br/>&nbsp;&nbsp;case &#34;6&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp; temp=&#34;周日,周一,周二,周三,周四,周五,周六&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp; temp=split(temp,&#34;,&#34;) <br/>&nbsp;&nbsp;&nbsp;&nbsp; FormatTime=temp(Weekday(DateTime)-1)<br/>&nbsp;&nbsp;case Else<br/>&nbsp;&nbsp;FormatTime=DateTime<br/>&nbsp;&nbsp;end sel&#101;ct<br/> End Function<br/><br/>&#39;－－－－－－－－－－－－－－－－－－－－－－杂项－－－－－－－－－－－－－－－－－－－－－<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：Zodiac<br/> &#39;作&nbsp;&nbsp;用：取得生消<br/> &#39;参&nbsp;&nbsp;数：birthday ----生日<br/> &#39;****************************************************<br/> public Function Zodiac(birthday)<br/>&nbsp;&nbsp;if IsDate(birthday) then<br/>&nbsp;&nbsp; birthyear=year(birthday)<br/>&nbsp;&nbsp; ZodiacList=array(&#34;猴&#34;,&#34;鸡&#34;,&#34;狗&#34;,&#34;猪&#34;,&#34;鼠&#34;,&#34;牛&#34;,&#34;虎&#34;,&#34;兔&#34;,&#34;龙&#34;,&#34;蛇&#34;,&#34;马&#34;,&#34;羊&#34;)&nbsp;&nbsp;<br/>&nbsp;&nbsp; Zodiac=ZodiacList(birthyear mod 12)<br/>&nbsp;&nbsp;end if<br/> End Function<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************<br/> &#39;函数名：Constellation<br/> &#39;作&nbsp;&nbsp;用：取得星座<br/> &#39;参&nbsp;&nbsp;数：birthday ----生日<br/> &#39;****************************************************<br/> public Function Constellation(birthday)<br/>&nbsp;&nbsp;if IsDate(birthday) then<br/>&nbsp;&nbsp; ConstellationMon=month(birthday)<br/>&nbsp;&nbsp; ConstellationDay=day(birthday)<br/>&nbsp;&nbsp; if Len(ConstellationMon)&lt;2 then ConstellationMon=&#34;0&#34;&amp;ConstellationMon<br/>&nbsp;&nbsp; if Len(ConstellationDay)&lt;2 then ConstellationDay=&#34;0&#34;&amp;ConstellationDay<br/>&nbsp;&nbsp; MyConstellation=ConstellationMon&amp;ConstellationDay<br/>&nbsp;&nbsp; if MyConstellation &lt; 0120 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/g.gif title=&#39;魔羯座 Capricorn&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0219 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/h.gif title=&#39;水瓶座 Aquarius&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0321 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/i.gif title=&#39;双鱼座 Pisces&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0420 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/^.gif title=&#39;白羊座 Aries&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0521 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/_.gif title=&#39;金牛座 Taurus&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0622 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/`.gif title=&#39;双子座 Gemini&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0723 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/a.gif title=&#39;巨蟹座 Cancer&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0823 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/b.gif title=&#39;狮子座 Leo&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 0923 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/c.gif title=&#39;处女座 Virgo&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 1024 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/d.gif title=&#39;天秤座 Libra&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 1122 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/e.gif title=&#39;天蝎座 Scorpio&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &lt; 1222 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/f.gif title=&#39;射手座 Sagittarius&#39;&gt;&#34;<br/>&nbsp;&nbsp; elseif MyConstellation &gt; 1221 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;constellation=&#34;&lt;img src=images/Constellation/g.gif title=&#39;魔羯座 Capricorn&#39;&gt;&#34;<br/>&nbsp;&nbsp; end if<br/>&nbsp;&nbsp;end if<br/> End Function<br/><br/> &#39;=================================================<br/> &#39;函数名：autopage<br/> &#39;作&nbsp;&nbsp;用：长文章自动分页<br/> &#39;参&nbsp;&nbsp;数：id,content,urlact<br/> &#39;=================================================<br/> Function AutoPage(content,paramater,pagevar)<br/>&nbsp;&nbsp; contentStr=split(content,pagevar) <br/>&nbsp;&nbsp; pagesize=ubound(contentStr)<br/>&nbsp;&nbsp; if pagesize&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;If Int(Request(&#34;page&#34;))=&#34;&#34; o&#114; Int(Request(&#34;page&#34;))=0 Then <br/>&nbsp;&nbsp;&nbsp;&nbsp; pageNum=1 <br/>&nbsp;&nbsp;&nbsp;&nbsp;Else <br/>&nbsp;&nbsp;&nbsp;&nbsp; pageNum=Request(&#34;page&#34;) <br/>&nbsp;&nbsp;&nbsp;&nbsp;End if <br/>&nbsp;&nbsp;&nbsp;&nbsp;if pageNum-1&lt;=pagesize then<br/>&nbsp;&nbsp;&nbsp;&nbsp; AutoPage=AutoPage&amp;contentStr(pageNum-1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; AutoPage=AutoPage&amp;&#34;&lt;div style=&#34;&#34;margin-top:10px;text-align:right;padding-right:15px;&#34;&#34;&gt;&lt;font color=blue&gt;页码:&lt;/font&gt;&lt;font color=red&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp; For i=0 to pagesize <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i=pageNum-1 then <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoPage=AutoPage&amp;&#34;[&lt;font color=red&gt;&#34;&amp;i+1&amp;&#34;&lt;/font&gt;] &#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if instr(paramater,&#34;?&#34;)&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AutoPage=AutoPage&amp;&#34;&lt;a href=&#34;&#34;&#34;&amp;paramater&amp;&#34;&amp;page=&#34;&amp;i+1&amp;&#34;&#34;&#34;&gt;[&#34;&amp;(i+1)&amp;&#34;]&lt;/a&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AutoPage=AutoPage&amp;&#34;&lt;a href=&#34;&#34;&#34;&amp;paramater&amp;&#34;?page=&#34;&amp;i+1&amp;&#34;&#34;&#34;&gt;[&#34;&amp;(i+1)&amp;&#34;]&lt;/a&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; Next <br/>&nbsp;&nbsp;&nbsp;&nbsp; AutoPage=AutoPage&amp;&#34;&lt;/font&gt;&lt;/div&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp; AutoPage=AutoPage&amp;&#34;非法操作！页号超出！&lt;a href=javascript:history.back(-1)&gt;&lt;u&gt;返回&lt;/u&gt;&lt;/a&gt;&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;end if<br/>&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;AutoPage=content<br/>&nbsp;&nbsp; end if<br/> End Function<br/>End Class<br/>%&gt;<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=63</link>
			<title><![CDATA[08年做“站”计划]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[我的心路历程]]></category>
			<pubDate>Wed,20 Feb 2008 12:25:27 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=63</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;08年的春节过得挺压抑，家里逼婚，出车祸，拼命地灌自己喝酒，结果把胃搞坏了。。。。。。想想本命年已经过去了，怎么还这么倒霉啊，看来真是流年不利啊。。。。<br/>&nbsp;&nbsp; 我的博客初步试验也算成功了，今天百度和google的流量也多了，而且很多关键字还多是排在第一，而且流量比我做了半年的江西在线还高，所以我更加肯定自己的思路是正确的。<br/>&nbsp;&nbsp; 这几天因为身体的原因我在加参考了很多关于seo之类的东东，可以说受益颇多也可以说毫无作用，因为有些东西我之前就已经知道了，但是现在重新看起来的时候还有令一番滋味。<br/>&nbsp;&nbsp; 其实最网站对于我来说就重要的就是一种成就感，因为早在04年的时候网站赚钱的黄金期，我也靠网站赚钱了，现在的环境和条件比起当初来说的确是差很多，所以我更希望得到的是一份成就一份肯定，所以不管怎样，我的目标就是两个，一个是江西在线，一个是我的博客，很多非技术性的东西我会在我的博客上试验，说白了也就是对网站关键字的选择，文章的title文字组合，和对热门的敏感和信息发布的及时性，在互联网上因为其特殊的原因，他的时效性更重要，尤其随着采集等技术的普及，网上雷同的东西太多了，所以一个网站即使内容再多，它也等于零。<br/>&nbsp;&nbsp; 我记得当初在做网站的时候我老爸问我说我是怎样运作的，我告诉它说我的资料都是直接从别人的网站上复制过来的 ，他老人家 虽然说没有任何文化，但是他就说了句话打了个比方给我听，他先是说我后来未必会成功，因为我的资料都是复制过来的，那时候我还理直气壮地和他说他不懂互联网这东西，他就和说，比如说我们那边拿些做仿牌的公司，因为没有自主的牌子，在开始的确是赚到钱了，但是后来随着法制社会的健全，他们一家接一家倒闭，虽然说中国是个是版权如粪土的地方，但是未来的发展也肯定是个趋势！<br/>&nbsp;&nbsp; 计算机和程序语言虽然都是死的东西，但是从最近几年百度和google的技术升级来看，它是越来越智能了，虽然他们的理解能力无法和人脑相比，但是它的分析和计算能力却不是人脑能够相比的，所以我还是说一句话，坚持原创，不会吃亏！]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=62</link>
			<title><![CDATA[百度收录减少的原因]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[搜索引擎优化与营销]]></category>
			<pubDate>Tue,19 Feb 2008 21:36:10 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=62</guid>	
		<description><![CDATA[百度收录减少的问题，好多站长都遇见过，最近好象严重点。最近我看到很多朋友说自己网站莫名其妙的百度收录减少,有的在还没有找到原因，没有合适的解决办法。百度收录减少也被有的朋友称呼为“百度拔毛”或者“百度割肉”如何解决百度收录减少，继续往下看。<br/>如果是新站,出现突然减少,其实也没什么可担心的,因为baidu和google不一样.google虽然限制宽松,但是稳定,对页面有一定的要求,更新内容是逐步增加.而百度,最喜欢做的是收录新站,只要是页面都收录,然后慢慢整理.<br/>具体的原因可能性太多,大约有几十种,把常见的原因列出来.请看下面:<br/>(1) 网站作弊.<br/>原因: 比如堆积关键字,隐性文字等等.如果出现这样的情况,百度就算已经收录了你,别庆幸自己蒙混过关,因为在更新的时候也会慢慢剔除的.二级域名和博客交叉连接.<br/>解决方法:这个不用说了吧,赶快把自己的页面好好修改一下吧!另外,二级域名不要过分乱用.博客交叉连接现在无用了,里面留一两个连接就可以,多了去掉.<br/>(2) 网站规范<br/>原因: 标题和关键词(KeyWords)过多,有的站长喜欢把搜索相关的关键字都放进去,你放一万个也没用的.还有就是描述(Description)不合理,如果你是新站,这个绝对有用的,要设置好.<br/>解决方法: 标题里留三四个关键字足够了,太多了百度不喜欢.建议设置为页面主题+专题名+网站名.至于关键词,你加上了没关系,但是至少页面应该出现点相关内容吧.描述的设置很简单,只要语言通顺,对页面做个大概的总结,出现两三次关键字就足够了.<br/>(3) 网站质量<br/>原因: 内容几乎全部采集来的,而且是采集的很热门的文章.百度突然会收录你几千页,但是百度收录后,在一定时间内,会重新检索,如果你内容没有价值的话,被丢弃.<br/>解决方法: 采集后,稍微修改一下再发布.不要太懒,你动动手,把文章简单浏览一下,更改段落或者部分内容,至少有点和别人不一样的地方.原创的多了最好,另外在页面留个版权信息.转载的话也可以留----文章整理:XXX网站 http:XXXXXX <br/>(4) 网站连接<br/>原因: 网站缺少外部连接,或者外部连接逐渐减少,百度对你站的重视当然也会降低,慢慢的减少收录内容.连接的质量是很重要的.垃圾连接宁可不要!另外,检查你的页面,如果有连接指向被封的站,百度会把你当作帮助犯的.<br/>解决方法: 检查网站外部连接,少的话就去交换,或者去一些大站大论坛发点能引起别人兴趣的帖子,留下连接.回复的人越多,效果越好. 如果站内有连接指向被封的站,尽快删除.<br/><br/>(5) 网站改版<br/>原因: 网站没有修改好,就已经提交到百度,动不动来个大变化,大更新,今天这样,明天那样.分类和标题换来换去.还有时候出现测试,或者其他和网站无关的内容.<br/>解决方法: 定位好,要做什么站就坚持下去.可以增加新的分类和内容.老的内容最好不要胡乱删除.如果你更换空间的换,最好提前换.保证在一段时间内以前的空间内容继续存在,以防万一.<br/>(6) 网站空间<br/>原因: 网站空间不稳定,动不动打不开网站,百度连续两次以上更新都无法抓到相信信息,那么你肯定要被从数据库清理,因为百度以为你的站已经关闭,或者相关页面不存在了.还有一个就是,你IP上多次出现作弊站点,跟着倒霉了.<br/>解决方法: 买空间时候注意,找点信誉好的IDC.别光为了便宜,如果经常出问题,别说百度了,网民也承受不了.毕竟你的站不会引起百度重视.另外,买空间时候时候检查一下虚拟主机IP上的站点,和收录情况,以及被封闭站点的数量.<br/>(7) 网站安全<br/>原因: 自己的站点上加了恶意代码或者故意挂马的话,百度能分析的出来.会降低你的信任度.还有就是被那些小黑客用工具入侵,修改或者删除了大部分页面.<br/>解决方法: 定期备份,出现问题及时解决.一般百度更新都是夜里勤快.对个人站每天更新的不多.如果一旦不正常,立刻处理,应该可以避免的.<br/>(8) 网站优化<br/>原因: 对SEO有一定的了解,就刻意的修改,网站做出来,过度优化,虽然没有明显作弊,但是根本没有任何价值.虽然通过百度可以得到流量,毕雇咀龀隼词翘峁└鹑虽赖?如果你回头率过低,也不行.百度不是一直提倡所谓的用户体验嘛.<br/>解决方法: 不要过分优化,SEO的本质是为搜索引擎服务,不是欺骗.万事把握个度.打个比方说,你页面某个关键字加粗一次,百度知道是重点,可你把所有的相关关键字都加粗,百度会怎么想???!!!<br/>(9) 网站倒霉<br/>原因: 也许你倒霉,遇见百度大的更新或者算法改变,会很多站点一起出现收录减少或者被K.正好你的站被百度看上了.<br/>解决方法: 没有太好的办法.只有慢慢等百度重新收录.如果你是SEO高人,也可以尽快琢磨出最新的算法给大家分享.<br/>(10) 网站关闭<br/>原因: 你的站点已经关闭了,但是百度还有很多相关的收录信息.论坛类比较常见.可收录却不断减少]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=61</link>
			<title><![CDATA[网站编辑如何使用seo]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[搜索引擎优化与营销]]></category>
			<pubDate>Tue,19 Feb 2008 21:32:57 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=61</guid>	
		<description><![CDATA[做为网络编辑，如果仅仅做些复制，粘贴，提交等简单的工作，俨然一个网络搬运工，那就不是一个合格的网络编辑，也不是一个成功的网络编辑。一个真正的好网编，必须是内外兼修的。<br/><br/>网站编辑做为网站内容的整合者和缔造者，在一个网站运营中起着很重要的作用。而网编如果能够很好的将SEO知识结合到网站的内容当中，对网站的整体优化具有很重要的作用。<br/><br/>　 网络编辑在网站优化中的重要性越来越受到人们的重视。随着搜索引擎优化竞争的白热化，靠优化关键词得到的流量已经不能满足网站自身发展。所以网站内容的优化就显得至关重要。<br/><br/>对于网页的优化，好的内容是优化的前提条件。好内容的标准是网站的内容要丰富，网站的“新”内容要多，用文本来表现内容三个方面。但这个“新”内容并不一定完全是自己的原创，只要信息整合的用户感觉新颖，搜索引擎不被识为与其他网站重复的内容即可达到目的。<br/><br/> 对于一个网站运营团队，用同样的精力如果分别把它用在网站的内容整合上和网站内容的原创上，内容整合得到的投资回报率更高。所以以原创为标准评判好内容的观点需要转变。但这并不是鼓励大家复制，而是要有技巧的复制。<br/><br/>　　首先我们要学会网页的命名及标签设计，对于一个网站编辑能真正的处理好这件事并不是很容易，因为这种设计并不单单是针对搜索引擎，而是需要进行多方面考虑最终权衡而得出的。<br/><br/>　　每个页面的title和meta标签都要不同，并且要与该页面的内容相呼应。title和meta的长度要控制合理。title设计越简洁明了越好，尽量不要超过25个汉字不过这是个常规的说法。网页描述meta标签不要超过100个字。另外，在描述里一定要有关键词出现，核心关键词合理出现四次左右比较合适。 title中合理突出1-2个关键词即可，不要贪多。<br/><br/>　&nbsp;&nbsp;其次我们知道h1在网站优化中有一定的重要性，搜索引擎会对它做重要的语意分析，这就需要在h1中要合理的出现想要突出优化的关键词，当然这也必须符合人正常的表达习惯。h1中要有关键词，但一定不要把几个关键词串联起来来做，这样很容易被搜索引擎判为作弊，带来不必要的损失。<br/><br/>再者要合理控制关键词在文章中的密度，适当的时候可以在网页中合理用加粗、改变颜色等突出关键词。总结到的是只要关键词不挤在一块，在文章中多加几个也不会出现什么问题。所以关键词在文章内的密度没有一个标准，但前提是不要影响网站页面美观，因为网站的内容永远是做给用户看的。<br/><br/>还有就是对于一个网站，如果在一个页面上有相关文章之类的栏目，对于提高网页的相关性很重要，有利于提高网页在搜索引擎面结果的权重。<br/><br/>次之，如果在一个网页上有最新发布的文章栏目，当搜索蜘蛛来到这个优化过的网页上时，如果网站有更新，搜索蜘蛛还会顺便把最新发布的文章带回自己的数据库，下一步用户搜索的时候就会被索引，这对于一个网站信息的收录很重要。<br/><br/>　　另外，如果网站的整体结构上有相对深的栏目或文章在文章中有相关的词，可以加上相应的链接。这样对网站流量的传递和搜索蜘蛛在网站中漫游很有作用。这一点很重要。鼓励大家不要嫌麻烦，一定要做。<br/><br/>　　最后再补充一点就是网页中图片的alt属性，我们都知道要加上相关的关键词。但如果几个图片同时加上同一个关键词。那就一定要小心肯定会被搜索引擎惩罚的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;总之，网页优化是网站优化的重要组成部分，网页的优化必须符合整个网站优化的战略计划。如果每个网站编辑都能担当起网站优化的角色，并且密切合作，那网站优化将并不再是一个工程，而是一个水到渠成的简易步骤。<br/><br/>网站编辑作为网页优化的实施者，学习必备的SEO知识不可或缺。SEO并不是高深的学问，只要勤于学习就能很快上手，但要真正的掌握它的精髓，还需要不断学习，其实SEO是一种思想。<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=60</link>
			<title><![CDATA[十招搞定网站SEO]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[搜索引擎优化与营销]]></category>
			<pubDate>Tue,19 Feb 2008 21:28:21 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=60</guid>	
		<description><![CDATA[第一招：网站诊断：<br/><br/>　　首先要对优化的网站进行诊断，写出一个详细的网站诊断书。<br/><br/>　　第二招：关键词选择<br/><br/>　　在进行网站优化前，先要锁定自己网站的关键词。选择一个合适的关键词对于网站优化有非常重要的作用。<br/><br/>　　具体操作步骤如下： 1、列出基础词2、使用关键词分析工具找出更多的关键词和热门关键词。<br/><br/>　　百度相关搜索<a href="http://d.baidu.com/rs.php" target="_blank">http://d.baidu.com/rs.php</a><br/><br/>　　百度指数<a href="http://index.baidu.com/" target="_blank">http://index.baidu.com/</a><br/><br/>　　英文关键词工具<a href="https://adwords.google.com/sel" target="_blank">https://adwords.google.com/sel</a>&#101;ct/KeywordToolExternal<br/><br/>　　提示：试着用剩余的关键字在搜索引擎中进行搜索，不要把焦点放在最流行的关键字上。有时候，次关键字排名起来还是比较容易的。因为最流行的关键字会存在着更多的竞争对手，而次关键字反之。在选择关键字时的技巧是找出关键字需求与关键字竞争的平衡点，即所选关键字竞争不是很激烈。简而言之就是长尾关键词的合理选用。例如www.tchulian.com这个网站如果做“机票”是很难做到首页的，如果用“春节特价机票”就不是很难。<br/><br/>　　第三招：网站构架完善优化网站的超链接构架，主要需要做好以下几方面：<br/><br/>　　1、 URL优化：把网站的url优化成权重较高的url<br/><br/>　　2、相关链接：做好站内各类页面之间的相关链接，此条非常重要，这方面做好，可以先利用网站的内部链接，为重要的关键词页面建立众多反向链接。这里要特别强调一下：反向链接是网页和网页之间的，不是网站和网站之间的。所以网站内部页面之间相互的链接，也是相互的反向链接，对排名也是有帮助的。<br/><br/>　　第四招：网站内容策略<br/><br/>　　1、丰富网站的内容：把网站内容搞丰富起来，这是非常重要的，网站内容越丰富，说明你的网站越专业，用户喜欢，搜索引擎也喜欢。<br/><br/>　　2、增加部分原创内容：因为采集系统促使制作垃圾站变成了生产垃圾站，所以完全没有原创内容的网站，尽管内容丰富，搜索引擎也不会很喜欢。所以一个网站，尽量要有一部分原创内容。<br/><br/>　　第五招：网页细节的优化和完善<br/><br/>　　1、title和meta标签的优化：按照SEO的标准，把网站的所有title和meta标签进行合理的优化和完善，以达到合理的状态。切记：千万不要盲目的在title中堆积关键词，这是大部分人经常翻的错误。一个真正SEO的非常合理的网站，是一个看不出有刻意优化痕迹的网站。<br/><br/>　　2、网页排版的规划化：主要是合理的使用H1、strong、alt等标签，在网页中合理的突出核心关键词。切记：千万不要把网页中所有的图片都加上alt注释，只需要将最重要的图片，不如产品图片，人物图片加上合理的说明就OK。<br/><br/>　　第六招：网站地图制作和提交这个步骤我以前写过详细的教程，大家可以到以下网站学习。 <a href="http://seo1.blog.sohu.com" target="_blank">http://seo1.blog.sohu.com</a><br/><br/>　　第七招：制订增加反向链接计划以前的工作都做好了，最重要的就是要制订一个合理的增加反向链接计划，然后选择几种合理的增加反向链接手段，然后按照计划需序渐进的去做，获得好排名就只是时间问题了。切记：不可短时间内迅速增加非常多的高质量的反向链接，比如短短两三天，增加几百个PR值都是4以上的链接，这样的话，你就危险了。容易被gogole当作购买链接，然后被处罚。<br/><br/>　　第八招：经常更新网站的内容，多加入一些比较有质量的内容。最好多弄一些原创的东西。<br/><br/>　　第九招：分析网站的流量的来源, (一般是使用统计系统)，通过数据分析自己网站，及时进行有效的改善。<br/><br/>　　第十招：坚持，坚持，再坚持。只有坚持不懈,持之以恒，才有可能成功，每一个成功，都是靠着一点一滴积累而成的。<br/><br/><br/>本篇文章来源于 站长资讯网 原文链接：<a href="http://management.chinahtml.com/1/2008/120028581417623.shtml" target="_blank">http://management.chinahtml.com/1/2008/120028581417623.shtml</a>]]></description>
		</item>
		
			<item>
			<link>http://www.suqingyang.com/default.asp?id=59</link>
			<title><![CDATA[一个小p孩说的话]]></title>
			<author>05955@163.com(admin)</author>
			<category><![CDATA[我的心路历程]]></category>
			<pubDate>Tue,19 Feb 2008 15:17:17 +0800</pubDate>
			<guid>http://www.suqingyang.com/default.asp?id=59</guid>	
		<description><![CDATA[<strong><br/><span style="color:Red"><span style="font-size:11pt">男人要珍惜</span></span></strong><br/> <br/> 男人要永遠感謝在他20多歲的時候曾經陪在他身邊的女人. <br/><br/>&nbsp;&nbsp;因爲20多歲的男人沒錢,沒事業.而20歲的女人最燦爛. <br/><br/>&nbsp;&nbsp;20歲是⒈個男人最黯淡的時光,要什麽沒什麽. <br/><br/>&nbsp;&nbsp;所以男人⒈定要珍惜在這個時期愛上你的女孩. <br/><br/>&nbsp;&nbsp;因爲,她是用⒈生中最美好的時光,來陪你度過最暗淡的時光. ─┄ <br/><br/><br/><strong><span style="color:Red"><span style="font-size:11pt">她眼中的狐狸精</span></span></strong><br/>&nbsp;&nbsp;&nbsp;&nbsp;男人很喜欢用狐狸精形容女人，女人本身也喜欢把坏的女人也比作狐狸精。。从此女人就跟狐狸精产生了渊源！ <br/>&nbsp;&nbsp;&nbsp;&nbsp;我想狐狸精不应该完全归于坏的吧&nbsp;&nbsp;！从另一方面反映也是女人精明的代名词吧！<br/>&nbsp;&nbsp;&nbsp;&nbsp;女人到底要这样才能活出我想要那样的完美呢？？？<br/>&nbsp;&nbsp;&nbsp;&nbsp;是要彻底的聪明还是要野性 还是要文静更还是要淑女？？？？？？？？想不明白<br/>&nbsp;&nbsp;&nbsp;&nbsp;我所推崇的是美貌与智慧，所谓的美貌是看的舒服有可探究的性，而并非看了好看再看就没什么感觉了<br/>&nbsp;&nbsp;&nbsp;&nbsp;我想这也是我喜欢茉莉的原因吧！因为它够清新淡雅！而智慧并不是小聪明或者是懂得怎么去把握男人！！！我所想要的是一个女人能在她的职场上创造出她的成绩，而家庭也会在她的掌握之下越来越好！！<br/>&nbsp;&nbsp;&nbsp;&nbsp;我想这样的女人才会完美，才会令人倾倒吧！！！！！！<br/><br/><br/>------------------------<br/><br/>一句话这个小孩子说的或许有道理，但她真的是想太多了。。。。。。]]></description>
		</item>
		
</channel>
</rss>