<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>疏林阁's blog</title>
		<link>http://shulinge.com/</link>
		<description>低调做人 &lt;&lt; === &gt;&gt;高调做事</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Tue, 07 Sep 2010 23:31:54 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://shulinge.com/show-754-1.html</guid>
			<title>Snoopy.class.php</title>
			<author>shulinge</author>
			<description><![CDATA[<p style="text-indent: 2em"><font face="宋体">官方网站 </font><a href="http://snoopy.sourceforge.net/"><font face="宋体" color="#37708b">http://snoopy.sourceforge.net/</font></a></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; 下面是它的一些特征：</font></p>
<p style="text-indent: 2em"><font face="宋体">1、方便抓取网页的内容</font></p>
<p style="text-indent: 2em"><font face="宋体">2、方便抓取网页的文字（去掉HTML代码）</font></p>
<p style="text-indent: 2em"><font face="宋体">3、方便抓取网页的链接</font></p>
<p style="text-indent: 2em"><font face="宋体">4、支持代理主机</font></p>
<p style="text-indent: 2em"><font face="宋体">5、支持基本的用户/密码认证模式</font></p>
<p style="text-indent: 2em"><font face="宋体">6、支持自定义用户agent,referer,cookies和header内容</font></p>
<p style="text-indent: 2em"><font face="宋体">7、支持浏览器转向，并能控制转向深度</font></p>
<p style="text-indent: 2em"><font face="宋体">8、能把网页中的链接扩展成高质量的url（默认）</font></p>
<p style="text-indent: 2em"><font face="宋体">9、方便提交数据并且获取返回值</font></p>
<p style="text-indent: 2em"><font face="宋体">10、支持跟踪HTML框架（v0.92增加）</font></p>
<p style="text-indent: 2em"><font face="宋体">11、支持再转向的时候传递cookies</font></p>
<p style="text-indent: 2em"><font face="宋体">下面是简单的例子，比如说我们抓取我的blog的文字</font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em"><font face="宋体">&lt;? </font></p>
<p style="text-indent: 2em"><font face="宋体">include &quot;Snoopy.class.php&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy = new Snoopy; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;fetchtext(&quot;http://www.phpobject.net/blog&quot;); </font></p>
<p style="text-indent: 2em"><font face="宋体">echo $snoopy-&gt;results; </font></p>
<p style="text-indent: 2em"><font face="宋体">?&gt; </font></p>
<p style="text-indent: 2em"><font face="宋体">^_^，不错把，在比如抓取链接</font></p>
<p style="text-indent: 2em"><font face="宋体">&lt;? </font></p>
<p style="text-indent: 2em"><font face="宋体">include &quot;Snoopy.class.php&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy = new Snoopy; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;fetchlinks(&quot;http://www.phpobject.net/blog&quot;); </font></p>
<p style="text-indent: 2em"><font face="宋体">print_r($snoopy-&gt;results); </font></p>
<p style="text-indent: 2em"><font face="宋体">?&gt; </font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em"><font face="宋体">－－－－－－－－－－－－－－－－－－－－</font></p>
<p style="text-indent: 2em"><font face="宋体">&lt;?phpinclude(&quot;snoopy.class.php&quot;);</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy = new Snoopy;</font></p>
<p style="text-indent: 2em"><font face="宋体">// need an proxy?://</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;proxy_host = &quot;my.proxy.host&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;proxy_port = &quot;8080&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">// set browser and referer:</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;agent = &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;referer = &quot;</font><a href="http://www.jonasjohn.de/"><font face="宋体" color="#37708b">http://www.jonasjohn.de/</font></a><font face="宋体">&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">// set some cookies:</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;cookies[&quot;SessionID&quot;] = '238472834723489';</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;cookies[&quot;favoriteColor&quot;] = &quot;blue&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">// set an raw-header:</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;rawheaders[&quot;Pragma&quot;] = &quot;no-cache&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">// set some internal variables:</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;maxredirs = 2;</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;offsiteok = false;</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;expandlinks = false;</font></p>
<p style="text-indent: 2em"><font face="宋体">// set username and password (optional)//</font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;user = &quot;joe&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">snoopy-&gt;pass = &quot;bloe&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">// fetch the text of the website </font><a href="http://www.google.com/"><font face="宋体" color="#37708b">www.google.com</font></a><font face="宋体">:</font></p>
<p style="text-indent: 2em"><font face="宋体">if($snoopy-&gt;fetchtext(&quot;</font><a href="http://www.google.com/"><font face="宋体" color="#37708b">http://www.google.com</font></a><font face="宋体">&quot;))</font></p>
<p style="text-indent: 2em"><font face="宋体">{&nbsp;&nbsp;&nbsp;&nbsp; // other methods: fetch, fetchform, fetchlinks, submittext and submitlinks</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // response code:&nbsp;&nbsp;&nbsp; print &quot;response code: &quot;.$snoopy-&gt;response_code.&quot;&lt;br/&gt;\n&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // print the headers:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;&lt;b&gt;Headers:&lt;/b&gt;&lt;br/&gt;&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; while(list($key,$val) = each($snoopy-&gt;headers))</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $key.&quot;: &quot;.$val.&quot;&lt;br/&gt;\n&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; print &quot;&lt;br/&gt;\n&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // print the texts of the website:&nbsp;&nbsp;&nbsp; print &quot;&lt;pre&gt;&quot;.htmlspecialchars($snoopy-&gt;results).&quot;&lt;/pre&gt;\n&quot;;</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; }</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp; else</font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; print &quot;Snoopy: error while fetching document: &quot;.$snoopy-&gt;error.&quot;\n&quot;;&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">}</font></p>
<p style="text-indent: 2em"><font face="宋体">?&gt; </font></p>
<p style="text-indent: 2em"><font face="宋体">－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</font></p>
<p style="text-indent: 2em"><font face="宋体">首先，我们要获取到登陆需要发送什么字段，目标地址是什么。这里我们使用snoopy的fetchform来实现。</font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em"><font face="宋体">&lt;? </font></p>
<p style="text-indent: 2em"><font face="宋体">include &quot;Snoopy.class.php&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy = new Snoopy; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy-&gt;fetchform(&quot;http://www.phpx.com/happy/logging.php?action=login&quot;); </font></p>
<p style="text-indent: 2em"><font face="宋体">print $snoopy-&gt;results; </font></p>
<p style="text-indent: 2em"><font face="宋体">?&gt; </font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em"><font face="宋体">当然你也可以直接查看</font><a href="http://www.phpx.com/happy/logging.php?action=login"><font face="宋体" color="#37708b">http://www.phpx.com/happy/...</font></a><font face="宋体">的源代码来实现，不过这样更加方便把。这里，我们获取到目标和提交的数据，下一步就可以实现模拟登陆了。代码如下：</font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em"><font face="宋体">&lt;? </font></p>
<p style="text-indent: 2em"><font face="宋体">include &quot;Snoopy.class.php&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">$snoopy = new Snoopy; </font></p>
<p style="text-indent: 2em"><font face="宋体">$submit_url = &quot;http://www.phpx.com/happy/logging.php?action=login&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;loginmode&quot;] = &quot;normal&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;styleid&quot;] = &quot;1&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;cookietime&quot;] = &quot;315360000&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;loginfield&quot;] = &quot;username&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;username&quot;] = &quot;********&quot;; //你的用户名 </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;password&quot;] = &quot;*******&quot;;&nbsp;&nbsp; //你的密码 </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;questionid&quot;] = &quot;0&quot;; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;answer&quot;] = &quot;&quot;;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $submit_vars[&quot;loginsubmit&quot;] = &quot;提 &amp;nbsp; 交&quot;;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; $snoopy-&gt;submit($submit_url,$submit_vars); </font></p>
<p style="text-indent: 2em"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp; print $snoopy-&gt;results; </font></p>
<p style="text-indent: 2em"><font face="宋体">?&gt; </font></p>]]></description>
			<link>http://shulinge.com/show-754-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2009-01-05 22:21</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-702-1.html</guid>
			<title>SQLite</title>
			<author>shulinge</author>
			<description><![CDATA[<p>1、SQLite简介 <br />
SQLite第一个Alpha版本诞生于2000年5月. 至今已经有4个年头了. 而在今年的5月SQLite也迎来了一个新的里程: SQLite 3. <br />
SQLite是一款轻型的数据库，它的设计目标是嵌入式的，而且目前已经在很多嵌入式产品中使用了它，它占用资源非常的低，在嵌入式设备中，可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统，同时能够跟很多程序语言相结合，比如Tcl、PHP、Java等，还有ODBC接口，同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲，它的处理速度比他们都快。 <br />
SQLite虽然很小巧，但是支持的SQL语句不会逊色于其他开源数据库，它支持的SQL包括： <br />
ATTACH DATABASE <br />
BEGIN TRANSACTION <br />
comment <br />
COMMIT TRANSACTION <br />
COPY <br />
CREATE INDEX <br />
CREATE TABLE <br />
CREATE TRIGGER <br />
CREATE VIEW <br />
DELETE <br />
DETACH DATABASE <br />
DROP INDEX <br />
DROP TABLE <br />
DROP TRIGGER <br />
DROP VIEW <br />
END TRANSACTION <br />
EXPLAIN <br />
expression <br />
INSERT <br />
ON CONFLICT clause <br />
PRAGMA <br />
REPLACE <br />
ROLLBACK TRANSACTION <br />
SELECT <br />
UPDATE <br />
同时它还支持事务处理功能等等。也有人说它象Microsoft的Access，有时候真的觉得有点象，但是事实上它们区别很大。比如SQLite 支持跨平台，操作简单，能够使用很多语言直接创建数据库，而不象Access一样需要Office的支持。如果你是个很小型的应用，或者你想做嵌入式开发，没有合适的数据库系统，那么现在你可以考虑使用SQLite。目前它的最新版本是 3.2.2，它的官方网站是：<a href="http://www.sqlite.org">http://www.sqlite.org</a>或者<a href="http://www.sqlite.com.cn">http://www.sqlite.com.cn</a>，能在上面获得源代码和文档。同时因为数据库结构简单，系统源代码也不是很多，也适合想研究数据库系统开发的专业人士</p>
<p>下面是访问SQLite官方网站: <a href="http://www.sqlite.org/">http://www.sqlite.org/</a> 时第一眼看到关于SQLite的特性. <br />
1. ACID事务 <br />
2. 零配置 &ndash; 无需安装和管理配置 <br />
3. 储存在单一磁盘文件中的一个完整的数据库 <br />
4. 数据库文件可以在不同字节顺序的机器间自由的共享 <br />
5. 支持数据库大小至2TB <br />
6. 足够小, 大致3万行C代码, 250K <br />
7. 比一些流行的数据库在大部分普通数据库操作要快 <br />
8. 简单, 轻松的API <br />
9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定 <br />
10. 良好注释的源代码, 并且有着90%以上的测试覆盖率 <br />
11. 独立: 没有额外依赖 <br />
12. Source完全的Open, 你可以用于任何用途, 包括出售它 <br />
13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python <br />
2、SQLite类型 <br />
SQLite的数据类型 <br />
首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于SQLite来说对字段不指定类型是完全有效的. 如: <br />
Create Table ex1(a, b, c); <br />
诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎. SQLite支持常见的数据类型, 如: <br />
CREATE TABLE ex2( <br />
a VARCHAR(10), <br />
b NVARCHAR(15), <br />
c TEXT, <br />
d INTEGER, <br />
e FLOAT, <br />
f BOOLEAN, <br />
g CLOB, <br />
h BLOB, <br />
i TIMESTAMP, <br />
j NUMERIC(10,5) <br />
k VARYING CHARACTER (24), <br />
l NATIONAL VARYING CHARACTER(16) <br />
); <br />
前面提到在某种情况下, SQLite的字段并不是无类型的. 即在字段类型为&rdquo;Integer Primary Key&rdquo;时.</p>
<p>3、如何连接SQLite？ <br />
用PHP操作sqlite数据库 <br />
a、 如何连接sqlite数据库？ <br />
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { <br />
select * from sqlite_master; <br />
echo &quot;数据库连接成功！n<br />
&quot;; <br />
} else { <br />
die($sqliteerror); <br />
} <br />
b、 如何列出数据库中所有的表？ <br />
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { <br />
$result = sqlite_array_query($db, 'select * from sqlite_master;'); <br />
foreach ($result as $entry) { <br />
echo 'talbe name='.$entry['name'].&quot;<br />
n&quot;; <br />
echo 'sql='.$entry['sql'].&quot;<br />
n&quot;; <br />
echo &quot; <br />
--------------------------------------------------------------------------------<br />
&quot;; <br />
} <br />
sqlite_close($db); <br />
} else { <br />
die($sqliteerror); <br />
}} <br />
c、 对sqlite数据库的查询，以及结果集的显示 <br />
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { <br />
$result = sqlite_array_query($db, 'select name, email from user ', SQLITE_ASSOC); <br />
echo &quot;user表查询结果:<br />
n&quot;; <br />
echo &quot; n name email <br />
n&quot;; <br />
foreach ($result as $entry) { <br />
echo ' '.$entry['name'].&quot; &quot; $entry['email'].&quot; <br />
n&quot;; <br />
} <br />
echo ' '; <br />
sqlite_close($db); <br />
} else { <br />
die($sqliteerror); <br />
} <br />
d、 数据库对象记录的增加、删除、修改</p>
<p>sqlite_query($db, &quot;INSERT INTO user VALUES('user&quot;.$i.&quot;'&quot; &quot;,'user&quot;.$i.&quot;@hichina.com')&quot;);</p>
<p>sqlite_query($db, &quot;delete from user where user=&rsquo;user99&rsquo;&quot;);</p>
<p>sqlite_query($db, 'UPDATE user SET email=&quot;<a href="mailto:lilz@hichina.com">lilz@hichina.com</a>&quot; where name=&quot;user1&quot;');</p>
<p>4、SQLite的管理 <br />
管理工具也有不少，建议您使用sqlitemanager，用法酷像phpmyadmin. <br />
可以到 <a href="http://sqlitemanager.sourceforge.net/">http://sqlitemanager.sourceforge.net/</a>下载</p>]]></description>
			<link>http://shulinge.com/show-702-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2008-06-21 09:45</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-426-1.html</guid>
			<title>关于如何在apache上绑定多域名的问题</title>
			<author>shulinge</author>
			<description><![CDATA[<DT>关于如何在apache上绑定多域名的问题 <BR>apache服务器配置文件在 <BR>/apache/conf/httpd.conf <BR><BR>这个文件夹下有三个文件，httpd.conf是主配置文件，其他的，初学者可以不管，但是在安全上有些问题。 <BR><BR>绑定域名的设置，在httpd.conf的最后几行，例如： <BR><BR>### 部分 3: 虚拟主机 <BR><BR># 基于名称的虚拟主机示例：[/color] <BR><BR>#<VIRTUALHOST></VIRTUALHOST> <BR># ServerAdmin webmaster@dummy-host.example.com <BR># DocumentRoot /www/docs/dummy-host.example.com <BR># ServerName dummy-host.example.com <BR># ErrorLog logs/dummy-host.example.com-error_log <BR># CustomLog logs/dummy-host.example.com-access_log common <BR># <BR>注意，每行前有#号的，说明这只是注释，并不对apache产生控制，所以，如果你要绑定域名，在下面加入行，去掉#就可以了。如下： <BR><BR><BR>### 部分 3: 虚拟主机 <BR><BR># 基于名称的虚拟主机示例： <BR><BR><VIRTUALHOST></VIRTUALHOST><BR>#设置网站管理员邮箱 <BR>ServerAdmin webmaster@dummy-host.example.com <BR>#虚拟主机目录（网站根目录） <BR>DocumentRoot /www/docs/dummy-host.example.com <BR>#要绑定的域名 <BR>ServerName dummy-host.example.com <BR>#产生记录文件 <BR>ErrorLog logs/dummy-host.example.com-error_log <BR>#记录文件 <BR>CustomLog logs/dummy-host.example.com-access_log common <BR><BR><BR>如果你是在本机测试，这篇文章的意义不大。谁也不会把域名绑定到一个变动IP的机器上，如果是在服务器上安装apache，则要先指定IP，使用以下命令： <BR><BR>#指定主机IP地址 <BR>NameVirtualHost 12.34.56.78 <BR><BR>这样的话，就把域名绑定到指定IP上了。 <BR>———————————————————— <BR>[color=crimson]关于如何安装win2000adv+php5.0+iis+apache2+mysql+perl <BR>如果你用windows，下载最新的apache(2.0.54),php(5.0.4),mysql(5.x的是测试版，推荐用4.1.1x),zend optimizer 2.5.7和kehui cms。 <BR><BR>####################################################################### <BR>第一： 装http服务器apache <BR><BR>APACHE 的安装，选择好目录即可，基本采取NEXT 一路下去就可以了。 <BR>我的APACHE 安装目录是F:\Program Files\Apache Group\Apache2 <BR><BR><BR>安装完毕，打开F:\Program Files\Apache Group\Apache2\conf下的 <BR>httpd.conf 文件， <BR><BR>"要保证APACHE2对中文支持。在httpd.conf文件中，找到下面这句，修改之： <BR><BR>AddDefaultCharset ISO-8859-1（好像是这么写的，改为AddDefaultCharset off）从apache2.0.53开始,中文字符已经支持,不在需要这个语句了!!!!!! <BR>" <BR><BR><BR><BR>还是httpd.conf文件里，设置ServerRoot（服务器根，也就是apache的安装目录） <BR>ServerRoot "F:\Program Files\Apache Group\Apache2" <BR>设置DocumentRoot（网站目录，也就是你机器上那些让人浏览的网页所在目录）比如： <BR>DocumentRoot "F:\Http" <BR>找到DirectoryIndex （浏览的缺省页）在后面补上一个 index.php <BR>这后面的一大串东西要用空格隔开比如：DirectoryIndex index.html index.php <BR><BR><BR><BR><BR>下面2个这么设比较好（此外Options和ServerSignature怎么设最好研究一下）： <BR>HostnameLookups Off <BR>ServerTokens Prod <BR>其它的以后自己慢慢学吧，反正现在是能用了。 <BR>运行一下apache，在浏览器里输入：http://localhost/xxx.html <BR>看看F:\http下面的xxx.html是不是能看到了（假设xxx.html文件已经存在）？ <BR><BR><BR><BR>############################################################################# <BR>第二：装脚本语言php <BR><BR><BR>下载php的zip文件，解压缩，将其中的： <BR>php5ts.dll、libmysql.dll 一起复制到 <BR>F:\Program Files\Apache Group\Apache2\bin的目录下; <BR>php.ini-recommended改名为php.ini 和 php5apache2.dll一起复制到F:\Program Files\Apache Group\Apache2下 <BR>此外，把php的ext目录整个复制过来，比如：F:\Program Files\Apache Group\Apache2\ext <BR><BR>打开F:\Program Files\Apache Group\Apache2\conf下的 <BR>httpd.conf 文件,添加下面这2句（这是为了让php能以模块模式运行于apache中）： <BR><BR>LoadModule php5_module "php5apache2.dll" <BR>AddType application/x-httpd-php .php <BR><BR><BR><BR>然后，修改php.ini <BR>(1) 改 display_errors = Off 成為 display_errors = On <BR>(2) 改 extension_dir = "./" (这个是php的ext目录所在位置)成為 <BR><BR>extension_dir = "F:\Program Files\Apache Group\Apache2\ext" <BR>(3) 改 ;extension=php_mysql.dll 去除分號成為 extension=php_mysql.dll <BR><BR><BR>php装完了。在你的网站目录下（比如：F:\http），建一个文本文件，内容如下： <BR><BR>保存为info.php。首先，重新启动apache服务器（也就载入php）；然后，在浏览器里输入： <BR><BR>http://localhost/info.php <BR>如果看到PHP的欢迎测试页面,说明安装成功 <BR><BR><BR><BR>原理： <BR>Apache 會啟動並載入 httpd.conf <BR>跑到 LoadModule 會使用 Windows API LoadLibrary 載入 php5apache2.dll <BR>接著會載入同目錄的 php5ts.dll <BR>然後會載入 php.ini 根據裡面的設定載入其他 extension dll <BR><BR><BR>各個 extension 的 dll 被載入後, 如果該 extension dll 還需要載入相關的 dll <BR>則其他需要的 dll 要放在 apache 的 bin 目錄下 <BR>因為 Apache 使用 Windows API LoadLibrary 來載入 DLL 檔, <BR>搜尋路徑是以 bin 為最優先, 其次是 SYSTEM32) <BR><BR><BR><BR><BR>######################################################################### <BR>第三：装数据库软件mysql <BR>这个很简单,选好安装目录,再选好apache目录F:\Program Files\Apache Group\Apache2 <BR>和php.ini目录F:\Program Files\Apache Group\Apache2就行了。 <BR>装完后要设置一下。 <BR>先选Detailed Configuration;然后是服务器类型，随便选，我选developer machine; <BR>接着选数据库用途，我选Multifunctional database，对innodb和myisam都支持然后 <BR>是innodb tablespace setting，我直接next（实际上我们好像并不需要innodb，直接选第3个只支持myisam的也可以）；; <BR><BR>然后，是用户数量，我选最少的； <BR>enable tcp/ip 我next了；字符集好像应该选第2个或第1个，我选的是第2个： <BR>Best Support for Multilingualism；install as windows service划钩，next; <BR>modify security settings自己选吧(可以改mysql的根密码password，缺省的根密码是没有。为了安全起见，最好自己设一个根密码),next。最后执行就行了。 <BR><BR><BR>都弄好了，先来建一个数据库：开始，程序，mysql,运行mysql command line client <BR>先输入根密码password(缺省是没有，改过的就要输入自己的密码)， <BR>屏幕出现mysql&gt; <BR>在后面输入create database kehui; 然后回车（分号一定要输入），就建了一个叫kehui的数据库 <BR>有了一个数据库就可以安装kehui cms了。（如果输入drop database xxx;就删掉xxx数据库） <BR><BR><BR><BR><BR>####################################################################### <BR>第四：装kehui cms <BR>kehui cms需要先安装zend optimizer，去下一个最新的，安装就行了，很简单。 <BR><BR>最后，把kehui都解压缩到F:\http目录下，到浏览器里输入http://localhost/install.php， <BR>上来是条款声明,点yes； <BR>进入到安装部分：host是数据库的主机名，既然数据库mysql和kehui cms都装在同一台机器上，那就填‘localhost’(也就是本地主机。如果不装在同一台机器上， <BR><BR>那就填数据库所在机器的名字) <BR>User name是mysql的根用户名，一般只能是‘root’ <BR>以上两项自动出，一般不需要自己输入。 <BR>Password是mysql的根密码，如果你没有改动过，缺省的就是什么也没有，不填；改过的话，就输入自己设的根密码。 <BR>database就是kehui CMS系统所需的数据库，这个数据库必须已经存在才行。刚才安装mysql的时候不是 <BR>已经建了一个也叫kehui的数据库吗？就用它好了，填'kehui' <BR>timezone好像是时区，默认是0，不用动。国外的朋友可能需要改，这个以后改也可以。 <BR><BR><BR>好啦，next，连接数据库，并创建表..... <BR>所有表都建立完后， <BR>Admin name是管理员（也就是你）在网站上的注册名，自己起名吧。 <BR>password输入自己登陆网站的密码 <BR>confirm再输入一遍密码 <BR>Admin email管理员的电子邮箱 <BR>继续下一步，也就全部完成。点击Done就可以来到主页。 <BR><BR><BR><BR>################################################################################# <BR>装好后，浏览器里http://localhost/就是主页（如果中文乱码，很可能是mysql字符集选择不对，语言那里重选； <BR>还不行就重装mysql，语言选项里选前2个中的一个，我印象是选第2个） <BR><BR><BR>http://localhost/admin/就是超级管理员的管理界面了，在主页上点击‘管理’或者'控制面板‘，也能到管理员界面。 <BR><BR>进入管理员界面后，进系统设置。要注意‘系统URL’这一栏，如果地址末尾有'\'或‘/’，一定要把末尾的'\'或‘/’删掉，否则会出现问题。 <BR><BR><BR>注意：系统URL最好这样写，以避免发生问题： <BR><BR>如果你的kehui就在F:/http目录下，那么系统URL不填，为空，主页URL填/index.php（登录网站的时候会自动加上前面的ip地址的）；如果kehui网站在F:/http/kehui目录下，系统URL要填/kehui，主页URL填/kehui/index.php。大体上就是这个意思。 <BR><BR>—————————————————————————————————————— <BR>如果再不懂，那再看下面的例子 <BR><BR><BR>我现在有这么一个问题， <BR>我有一台服务器，只有一个ip，假设为202.112.11.22 <BR>我有两个国际域名，三个站点， <BR>我想用apache支持多个域名， <BR>站点一通过202.112.11.22访问（对应本机usr/local/www/) <BR>站点二www.site1.com的地址为202.112.11.22/site1/（对应本机usr/local/www/site1/) <BR>站点三www.site2.com的地址为202.112.11.22/site2/（对应本机usr/local/www/site2/) <BR>请问如何设置apache ？ <BR><BR><BR><BR>解决办法： <BR>打开http.conf <BR>1，ServerName 127.0.0.1 修改成ServerName 202.112.11.22 <BR>2，#NameVirtualHost * 修改成"NameVirtualHost 202.112.11.22" <BR>3，在文件最后面有虚拟主机格式， <BR><BR>#<VIRTUALHOST></VIRTUALHOST> <BR># ServerAdmin webmaster@dummy-host.example.com <BR># DocumentRoot /www/docs/dummy-host.example.com <BR># ServerName dummy-host.example.com <BR># ErrorLog logs/dummy-host.example.com-error_log <BR># CustomLog logs/dummy-host.example.com-access_log common <BR># <BR><BR><BR>简单的添加： <BR><BR><VIRTUALHOST></VIRTUALHOST><BR>DocumentRoot usr/local/www/ <BR>ServerName 202.112.11.22 <BR><BR><VIRTUALHOST></VIRTUALHOST><BR>DocumentRoot usr/local/www/site1/ <BR>ServerName www.site1.com <BR><BR><VIRTUALHOST></VIRTUALHOST><BR>DocumentRoot usr/local/www/site2/ <BR>ServerName www.site2.com <BR><BR>假如要跟IIS并存，而且IIS已经占用80端口，上面的设置无效，因此要在所有的IP后面跟上你设定的端口 <BR>另外 <BR>listen port 80 改为 listen port 你喜欢的端口。 <BR>—————————————————————————— <BR>关于高级安全配置，细读以下： <BR><BR>高级配置 <BR><BR><BR>1、设置虚拟目录 <BR><BR>　　在配置文件中找下面这行： <BR><BR>　　　　<IFMODULE></IFMODULE> <BR><BR>　　在这行下面添加如下内容： <BR><BR>　　　　Alias /vdir/ "c:/comexe/" <BR><BR>　　　　<DIRECTORY></DIRECTORY> <BR>　　　　Options MultiViews <BR>　　　　AllowOverride None <BR>　　　　Order allow,deny <BR>　　　　Allow from all <BR>　　　　 <BR><BR>　　这样，通过访问 http://user.dns0755.net/vdir/，就可以访问到c:\comexe\目录下的内容。 <BR><BR>　　Apache默认开设了两个虚拟目录：“/icons/”和“/manual/”。这两个虚拟目录没有用，可以在配置文件中删除。 <BR><BR><BR><BR>2、如何解决中文网页显示乱码 <BR><BR>（1）在配置文件中找包含“AddLanguage”或“AddCharset”的行，在这些行最前面增加一行： <BR><BR>　　　　AddDefaultCharset GB2312 <BR><BR>（2）养成良好的习惯，在每个网页的里加入这行： <BR><BR>　　　　 <BR><BR>　　一般的中文版网页编辑工具（例如FrontPage、Dreamweaver等）都会自动加上这行。 <BR><BR><BR><BR>3、如何解决中文文件名无法访问 <BR><BR>　　在ie中选择 工具 -&gt; internet选项 -&gt; 高级 -&gt; 取消“总是以UTF-8发送URL”。 <BR><BR>　　这个方法很麻烦，请尽量不要使用中文的网站文件名。 <BR><BR>请注意： <BR><BR>1、Apache配置过程中最关键的两点是：网站根目录和默认首页文件名。必须要把网站文件放在所指定的网站根目录下，而且默认首页文件名必须要设置正确，否则将看不到您的网页。 <BR><BR>2、每次配置文件更改后，要重新启动Apache才会生效。 </DT>]]></description>
			<link>http://shulinge.com/show-426-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-03-02 13:40</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-425-1.html</guid>
			<title>用Apache绑定域名设置虚拟主机</title>
			<author>shulinge</author>
			<description><![CDATA[<P>Apache下要怎样才能像IIS那样设定虚拟主机呢?? 有好几个Domain Name 却只有一个IP</P>
<P>一台主机怎么办呢? 本篇教你怎么设置虚拟主机…<BR>觉得 http://domain/~user 这样的域名太长或者没有独特性吗?<BR>想要有个不一样的domain吗? 例: http://user.domain/ </P>
<P>【安裝Apache】<BR>要设虚拟主机当然要先装好Apache.<BR>安装这部分就略过了. </P>
<P>【设定前准备 】<A id=more-110></A></P>
<P>1.先找到安装Apache的目录,例如: C:Apache </P>
<P>2.找到 httpd.conf文档 ,例: C:Apacheconfhttpd.conf </P>
<P>3.先把 httpd.conf 备份起来 (这个动作要养成习惯.) </P>
<P>4.用记事本打开 httpd.conf<BR>先找到<BR>#<VIRTUALHOST *><BR># ServerAdmin webmaster@dummy-host.example.com<BR># DocumentRoot /www/docs/dummy-host.example.com<BR># ServerName dummy-host.example.com<BR># ErrorLog logs/dummy-host.example.com-error.log<BR># CustomLog logs/dummy-host.example.com-access.log common<BR>#</VIRTUALHOST> </P>
<P>正常的话是在 httpd.conf 的最下面的部分 </P>
<P>【了解 VirtualHost 相关参数】</P>
<P>语法：<VIRTUALHOST [hostname]>..</VIRTUALHOST><BR>说明：虚拟主机的设定 </P>
<P>举例：<BR>NameVirtualHost *　　　　　　　　　　(设定主机的ip)<BR><VIRTUALHOST *>　　　　　　　　　　　 (开头设定虚拟主机的ip)<BR>ServerAdmin admin@domain.com　　　(设定虚拟主机的管理者信箱，不用和预设的网站管理者相同)<BR>DocumentRoot c:/user/　　　　　　　　(指定虚拟主机的网站主目录)<BR>ServerName domain.com 　　　　　　　(设定虚拟主机的名称,指定设定虚拟主机的UR)<BR>ServerAlias www.domain.com　　　　　(设定虚拟主机的別名,例: WWW )<BR>ErrorLog logs/* 　　　　　　　　　 (虚拟主机发生错误时要记录在哪个目录,可不设.)<BR>TransferLog logs/??　　　　　　　　 　(虚拟主机存取记载要存放的个目录,可不设.)<BR></VIRTUALHOST>　　　　　　　　　　　 (结束,要设第二组虚拟主机在从开头开始设) </P>
<P>※别名的意思:<BR>一般的apache网址都是 http://domain/~user<BR>如果有另外申请另一个domain , 不可能因为这样又架一台主机,或者开另一个使用者,这</P>
<P>时就需要用到别名.<BR>或者只有一个domain,却想要制作好几个网站,也可以用别名去做,那每个网站都有各个独</P>
<P>特性.看起来就像是不同的主机一样. </P>
<P>【设定范例 教学】</P>
<P>#第一个部分,设定你虚拟主机要用的ip<BR>NameVirtualHost 123.123.123.123　(设定主机的ip)　　※设定一次就好 </P>
<P>#第二个部分,跟你预设的主机设定一样,也就是还没设定其他虚拟主机之前会看到的网站<BR><VIRTUALHOST 123.123.123.123>　(设定你自己主机的ip)<BR>　 ServerAdmin admin@domain.com<BR>　 DocumentRoot c:/Apache/htdocs<BR>　 ServerName domain.com<BR>　 ServerAlias www.domain.com<BR></VIRTUALHOST></P>
<P>#第三个部分,第一组虚拟主机,用途:跟预设主机不同domain时可用.<BR><VIRTUALHOST 123.123.123.123><BR>　 ServerAdmin admin@domain1.com<BR>　 DocumentRoot c:/Apache/users/w1<BR>　 ServerName domain.com<BR>　 ServerAlias www.domain1.com<BR></VIRTUALHOST></P>
<P>#第四个部分,第二组虚拟主机,用途:domain1的别名主机.<BR><VIRTUALHOST 123.123.123.123><BR>　 ServerAdmin admin2@domain1.com<BR>　 DocumentRoot c:/Apache/users/w2<BR>　 ServerName domain.com<BR>　 ServerAlias www2.domain1.com<BR></VIRTUALHOST></P>]]></description>
			<link>http://shulinge.com/show-425-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-03-02 13:39</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-424-1.html</guid>
			<title>win+apache下配置虚拟主机和绑定域名</title>
			<author>shulinge</author>
			<description><![CDATA[<P>那天是在一个朋友送的服务器上(肉鸡),MAIL服务器,没有装IIS,我自己安装了APACHE后发现无法绑米所以才学习了相关的东西<BR>本篇内容大部分可以在网上找到,不过大部分是LINUX下的,稍微有不同,为了使大家使用方便,不走晚路,我自己也写了一个简单的教程,希望大家能接受.<BR><BR>　　<BR>　　在WIN下安装APACHE配置虚拟目录和UNIN下基本是一样的<BR><BR>　　就是修改httpd.conf<BR><BR>　　1:单个IP对应单个玉米<BR><BR>　　例如:www.phpunion.com对应192.168.1.1<BR><BR>　　www.feelone.net对应192.168.1.2<BR><BR>　　在httpd.conf中加入如下指令<BR><BR>　　&lt;VirtualHost&nbsp;192.168.1.1&gt;&nbsp;&nbsp;&nbsp;&nbsp;#对应玉米所指向的IP<BR><BR>　　<BR>　　DocumentRoot&nbsp;"c:/web/php"&nbsp;&nbsp;&nbsp;#www.phpunion.com要指向的目录,注意一定要有""<BR><BR>　　ServerName&nbsp;www.phpunion.com&nbsp;&nbsp;#所要绑的玉米<BR><BR>　　&lt;/VirtualHost&gt;<BR><BR>　　&lt;VirtualHost&nbsp;192.168.1.2&gt;&nbsp;&nbsp;&nbsp;&nbsp;#对应玉米所指向的IP<BR><BR>　　<BR>　　DocumentRoot&nbsp;"c:/web/feel"&nbsp;&nbsp;&nbsp;#www.feelone.net要指向的目录,注意一定要有""<BR><BR>　　ServerName&nbsp;www.feelone.net&nbsp;#所要绑的玉米<BR><BR>　　&lt;/VirtualHost&gt;<BR><BR>　　剩下的可以继续绑!<BR><BR>　　2:单个IP对应多个玉米</P>
<P>NameVirtualHost&nbsp;192.168.1.1&nbsp;&nbsp;&nbsp;#记得一定要有着句啊!<BR><BR>　　&lt;VirtualHost&nbsp;192.168.1.1&gt;&nbsp;&nbsp;&nbsp;&nbsp;#对应玉米所指向的IP<BR><BR>　　<BR>　　DocumentRoot&nbsp;"c:/web/php"&nbsp;&nbsp;&nbsp;#www.phpunion.com要指向的目录,注意一定要有""<BR><BR>　　ServerName&nbsp;www.phpunion.com&nbsp;&nbsp;#所要绑的玉米<BR><BR>　　&lt;/VirtualHost&gt;<BR><BR>　　&lt;VirtualHost&nbsp;192.168.1.1&gt;&nbsp;&nbsp;&nbsp;&nbsp;#对应玉米所指向的IP<BR><BR>　　<BR>　　DocumentRoot&nbsp;"c:/web/feel"&nbsp;&nbsp;&nbsp;#www.feelone.net要指向的目录,注意一定要有""<BR><BR>　　ServerName&nbsp;www.feelone.net&nbsp;#所要绑的玉米<BR><BR>　　&lt;/VirtualHost&gt;<BR><BR>　　这样就绑上对应的目录了,如果没有NameVirtualHost&nbsp;192.168.1.1&nbsp;这个指令的话,所有的玉米就都指到php目录了.<BR><BR>　　然后重新启动apache,就可以看到所指的玉米对应相应的虚拟目录!<BR></P>]]></description>
			<link>http://shulinge.com/show-424-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-03-02 13:39</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-423-1.html</guid>
			<title>apache绑定多个域名的问题</title>
			<author>shulinge</author>
			<description><![CDATA[<DIV>我现在有这么一个问题，<BR>我有一台服务器，只有一个ip，假设为202.112.11.22<BR>我有两个国际域名，三个站点，<BR>我想用apache支持多个域名，<BR>站点一通过202.112.11.22访问（对应本机usr/local/www/)<BR>站点二<A href="http://www.site1.com/"><FONT color=#0000ff>www.site1.com</FONT></A>的地址为202.112.11.22/site1/（对应本机usr/local/www/site1/)<BR>站点三<A href="http://www.site2.com/"><FONT color=#0000ff>www.site2.com</FONT></A>的地址为202.112.11.22/site2/（对应本机usr/local/www/site2/)<BR>请问如何设置apache ？<BR><BR>解决办法：<BR>打开http.conf<BR>1，ServerName 127.0.0.1 修改成ServerName 202.112.11.22<BR>2，#NameVirtualHost * &nbsp; &nbsp; 修改成"NameVirtualHost 202.112.11.22"<BR>3，在文件最后面有虚拟主机格式，<BR>
<DIV><B>QUOTE:</B></DIV>
<DIV><BR>#&lt;VirtualHost *&gt;<BR># &nbsp; ServerAdmin <A href="mailto:webmaster@dummy-host.example.com"><FONT color=#0000ff>webmaster@dummy-host.example.com</FONT></A><BR># &nbsp; DocumentRoot /www/docs/dummy-host.example.com<BR># &nbsp; ServerName dummy-host.example.com<BR># &nbsp; ErrorLog logs/dummy-host.example.com-error_log<BR># &nbsp; CustomLog logs/dummy-host.example.com-access_log common<BR>#&lt;/VirtualHost&gt;</DIV><BR>简单的添加：<BR><BR>&lt;VirtualHost 202.112.11.22&gt;<BR>&nbsp; &nbsp; DocumentRoot usr/local/www/<BR>&nbsp; &nbsp; ServerName &nbsp; 202.112.11.22<BR>&lt;/VirtualHost&gt;<BR>&lt;VirtualHost 202.112.11.22&gt;<BR>&nbsp; &nbsp; DocumentRoot usr/local/www/site1/<BR>&nbsp; &nbsp; ServerName &nbsp; <A href="http://www.site1.com/"><FONT color=#0000ff>www.site1.com</FONT></A><BR>&lt;/VirtualHost&gt;<BR>&lt;VirtualHost 202.112.11.22&gt;<BR>&nbsp; &nbsp; DocumentRoot &nbsp; usr/local/www/site2/<BR>&nbsp; &nbsp; ServerName &nbsp; <A href="http://www.site2.com/"><FONT color=#0000ff>www.site2.com</FONT></A><BR>&lt;/VirtualHost&gt;<BR></DIV>]]></description>
			<link>http://shulinge.com/show-423-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-03-02 13:38</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-416-1.html</guid>
			<title>php实现ping</title>
			<author>shulinge</author>
			<description><![CDATA[&lt;?php 
<P></P>
<P>// created by joe lumbroso <BR>// see some other good php3 scripts <BR>// goto http://www.dtheatre.com/scripts </P>
<P>echo "&lt;font color=\"red\"&gt;&lt;blink&gt;&lt;b&gt;Pinging&lt;/b&gt;&lt;/blink&gt;&lt;/font&gt;&lt;br&gt;"; <BR>$to_ping = "dtheatre.com"; <BR>$count = 3; <BR>$psize = 65; <BR>echo " Please be patient, this can take a few moments...\n&lt;br&gt;&lt;br&gt;"; <BR>flush(); </P>
<P>while (1) { <BR>?&gt; <BR>&lt;pre&gt; <BR>&lt;? <BR>exec("ping -c $count -s $psize $to_ping", $list); <BR>for ($i=;$i &lt; count($list);$i++) { <BR>print $list[$i]."\n"; <BR>} <BR>?&gt; <BR>&lt;/pre&gt; <BR>&lt;? <BR>flush(); <BR>sleep(3); <BR>} <BR>?&gt;</P>]]></description>
			<link>http://shulinge.com/show-416-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-01-31 11:01</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-413-1.html</guid>
			<title>正则符号解析</title>
			<author>shulinge</author>
			<description><![CDATA[<DIV align=center>
<TABLE class=MsoNormalTable style="BACKGROUND: #eaeaea; mso-cellspacing: .7pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellSpacing=1 cellPadding=0 border=0>
<TBODY>
<TR style="mso-yfti-irow: 0">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; WIDTH: 60pt; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8" width=80>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">字符<SPAN lang=EN-US> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></B></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">描述<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\ <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，<SPAN lang=EN-US>'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">^ <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配输入字符串的开始位置。如果设置了<SPAN lang=EN-US> RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">$ <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配输入字符串的结束位置。如果设置了<SPAN lang=EN-US>RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">* <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配前面的子表达式零次或多次。例如，<SPAN lang=EN-US>zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">+ <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配前面的子表达式一次或多次。例如，<SPAN lang=EN-US>'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 6">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">? <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配前面的子表达式零次或一次。例如，<SPAN lang=EN-US>"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 7">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{n} <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 8">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{n,} <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 9">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{n,m} <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 10">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">? <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">当该字符紧跟在任何一个其他限制符<SPAN lang=EN-US> (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 "oooo"，'o+?' 将匹配单个 "o"，而 'o+' 将匹配所有 'o'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 11">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">. <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配除<SPAN lang=EN-US> "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 12">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(pattern) <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0…$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 13">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(?:pattern) <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 14">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(?=pattern) <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">正向预查，在任何匹配<SPAN lang=EN-US> pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 15">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(?!pattern) <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">负向预查，在任何不匹配<SPAN lang=EN-US> pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 16">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">x|y <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 17">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">[xyz] <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">字符集合。匹配所包含的任意一个字符。例如，<SPAN lang=EN-US> '[abc]' 可以匹配 "plain" 中的 'a'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 18">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">[^xyz] <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">负值字符集合。匹配未包含的任意字符。例如，<SPAN lang=EN-US> '[^abc]' 可以匹配 "plain" 中的'p'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 19">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">[a-z] <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">字符范围。匹配指定范围内的任意字符。例如，<SPAN lang=EN-US>'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 20">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">[^a-z] <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">负值字符范围。匹配任何不在指定范围内的任意字符。例如，<SPAN lang=EN-US>'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 21">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\b <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个单词边界，也就是指单词和空格间的位置。例如，<SPAN lang=EN-US> 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 22">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\B <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配非单词边界。<SPAN lang=EN-US>'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 23">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\cx <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配由<SPAN lang=EN-US> x 指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 24">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\d <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个数字字符。等价于<SPAN lang=EN-US> [0-9]。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 25">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\D <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个非数字字符。等价于<SPAN lang=EN-US> [^0-9]。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 26">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\f <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个换页符。等价于<SPAN lang=EN-US> \x0c 和 \cL。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 27">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\n <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个换行符。等价于<SPAN lang=EN-US> \x0a 和 \cJ。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 28">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\r <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个回车符。等价于<SPAN lang=EN-US> \x0d 和 \cM。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 29">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\s <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配任何空白字符，包括空格、制表符、换页符等等。等价于<SPAN lang=EN-US> [ \f\n\r\t\v]。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 30">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\S <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配任何非空白字符。等价于<SPAN lang=EN-US> [^ \f\n\r\t\v]。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 31">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\t <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个制表符。等价于<SPAN lang=EN-US> \x09 和 \cI。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 32">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\v <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配一个垂直制表符。等价于<SPAN lang=EN-US> \x0b 和 \cK。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 33">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\w <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配包括下划线的任何单词字符。等价于<SPAN lang=EN-US>'[A-Za-z0-9_]'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 34">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\W <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配任何非单词字符。等价于<SPAN lang=EN-US> '[^A-Za-z0-9_]'。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 35">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\xn <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。.<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 36">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\num <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 37">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\n <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">标识一个八进制转义值或一个向后引用。如果<SPAN lang=EN-US> \n 之前至少 n 个获取的子表达式，则 n 为向后引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 38">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\nm <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">标识一个八进制转义值或一个向后引用。如果<SPAN lang=EN-US> \nm 之前至少有 nm 个获得子表达式，则 nm 为向后引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 39">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\nml <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如果<SPAN lang=EN-US> n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。<o:p></o:p></SPAN></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 40; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">\un <o:p></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 2.25pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 2.25pt; BACKGROUND: #fafafa; PADDING-BOTTOM: 2.25pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 2.25pt; BORDER-BOTTOM: #d4d0c8">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">匹配<SPAN lang=EN-US> n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。<o:p></o:p></SPAN></SPAN></P></TD></TR></TBODY></TABLE></DIV>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></P>]]></description>
			<link>http://shulinge.com/show-413-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2007-01-03 20:47</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-410-1.html</guid>
			<title>半小时教你学会正则表达式</title>
			<author>shulinge</author>
			<description><![CDATA[想必很多人都对正则表达式都头疼.今天,我以我的认识,加上网上一些文章,希望用常人都可以理解的表达方式.来和大家分享学习经验.
<P>　　开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束，以下分别举例说明 <BR><BR>　　"^The": 开头一定要有"The"字符串; <BR>　　"of despair$": 结尾一定要有"of despair" 的字符串; <BR><BR>　　那么,<BR>　　"^abc$": 就是要求以abc开头和以abc结尾的字符串，实际上是只有abc匹配 <BR>　　"notice": 匹配包含notice的字符串 <BR><BR>　　你可以看见如果你没有用我们提到的两个字符（最后一个例子），就是说 模式（正则表达式） 可以出现在被检验字符串的任何地方，你没有把他锁定到两边</P>
<P>&nbsp;　　接着,说说 '*', '+',和 '?', </P>
<P>　　他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示：<BR>　　"zero or more"相当于{0,}, <BR>　　"one or more"相当于{1,}, <BR>　　"zero or one."相当于{0,1}, 这里是一些例子: <BR><BR>　　"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等); <BR>　　"ab+": 和ab{1,}同义,同上条一样，但最少要有一个b存在 ("ab", "abbb", 等.); <BR>　　"ab?":和ab{0,1}同义,可以没有或者只有一个b; <BR>　　"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.</P>
<P>&nbsp;　　<STRONG><FONT color=#000099>要点, '*', '+',和 '?'只管它前面那个字符.<BR></FONT></STRONG><BR clear=all><BR>　　你也可以在大括号里面限制字符出现的个数，比如 <BR><BR>　　"ab{2}": 要求a后面一定要跟两个b（一个也不能少）("abb"); <BR>　　"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.); <BR>　　"ab{3,5}": 要求a后面可以有2－5个b("abbb", "abbbb", or "abbbbb"). <BR><BR>　　现在我们把一定几个字符放到小括号里，比如：<BR>　　"a(bc)*": 匹配 a 后面跟0个或者一个"bc"; <BR>　　"a(bc){1,5}": 一个到5个 "bc." <BR><BR>　　还有一个字符 '│', 相当于OR 操作: <BR><BR>　　"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串; <BR>　　"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串; <BR>　　"(a│b)*c": 匹配含有这样多个（包括0个）a或b，后面跟一个c 的字符串; <BR><BR>　　一个点('.')可以代表<U>所有的单一字符,不包括"\n"</U></P>
<P>　　如果,要匹配包括"\n"在内的所有单个字符,怎么办?<BR>　　对了,用'[\n.]'这种模式.<BR><BR>　　"a.[0-9]": 一个a加一个字符再加一个0到9的数字 <BR>　　"^.{3}$": 三个任意字符结尾 . <BR><BR>　　中括号括住的内容只匹配一个单一的字符 <BR><BR>　　"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样); <BR>　　"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文<BR>　　"^[a-zA-Z]": 匹配以大小写字母开头的字符串 <BR>　　"[0-9]%": 匹配含有 形如 x％ 的字符串 <BR>　　",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串 <BR><BR>　　你也可以把你不想要得字符列在中括号里，你只需要在总括号里面使用'^' 作为开头 "%[^a-zA-Z]%" 匹配含有两个百分号里面有一个非字母的字符串. <BR><BR>　　<STRONG><FONT color=#000099>要点:^用在中括号开头的时候,就表示排除括号里的字符</FONT></STRONG></P>
<P><BR clear=all></P>
<P>&nbsp;　　为了PHP能够解释，你必须在这些字符面前后加'',并且将一些字符转义. </P>
<P>　　不要忘记在中括号里面的字符是这条规路的例外—在中括号里面, 所有的特殊字符，包括(''), 都将失去他们的特殊性质 "[*\+?{}.]"匹配含有这些字符的字符串.</P>
<P>　　还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的‘-’将有效. </P>
<P>　　看了上面的例子,你对{n,m}应该理解了吧.要注意的是,n和m都不能为负整数,而且n总是小于m. 这样,才能 最少匹配n次且最多匹配m次. 如"p{1,5}"将匹配 "pvpppppp"中的前五个p</P>
<P>　　下面说说以\开头的</P>
<P>　　\b 书上说他是用来匹配一个单词边界,就是...比如've\b',可以匹配love里的ve而不匹配very里有ve</P>
<P>　　\B 正好和上面的\b相反.例子我就不举了</P>
<P>　　好,我们来做个应用:</P>
<P>　　<FONT color=#000099><STRONG>如何构建一个模式来匹配 货币数量 的输入</STRONG></FONT></P>
<P>　　构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式： "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and "10,000". 现在让我们开始构建这个匹配模式: </P>
<P>　　^[1-9][0-9]*$ </P>
<P>　　这是所变量必须以非0的数字开头.但这也意味着 单一的 "0" 也不能通过测试. 以下是解决的方法: <BR>　　^(0│[1-9][0-9]*)$ </P>
<P>　　"只有0和不以0开头的数字与之匹配"，我们也可以允许一个负号在数字之前: <BR>　　^(0│-?[1-9][0-9]*)$ </P>
<P>　　这就是: "0 或者 一个以0开头 且可能 有一个负号在前面的数字." 好了,现在让我们别那么严谨，允许以0开头.现在让我们放弃负号 , 因为我们在表示钱币的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分: <BR>　　^[0-9]+(\.[0-9]+)?$ </P>
<P><BR clear=all></P>
<P>　　这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意，在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. （你知道为什么吗） </P>
<P>　　^[0-9]+(\.[0-9]{2})?$ </P>
<P>　　我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成: <BR>　　^[0-9]+(\.[0-9]{1,2})?$ </P>
<P>　　这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号（每隔三位）, 我们可以这样表示: <BR>　　^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ </P>
<P>　　不要忘记 '+' 可以被 '*' 替代 如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 ’\’ 在php字符串中可能会出现错误 (很普遍的错误). <BR><BR>　　现在，我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(",", "", $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了. <BR><BR>　　再来一个:</P>
<P>　　<STRONG><FONT color=#000099>构造检查email的正则表达式</FONT></STRONG></P>
<P>　　在一个完整的email地址中有三个部分: <BR>　　1. 用户名 (在 '@' 左边的一切), <BR>　　2.'@',<BR>　　3. 服务器名(就是剩下那部分). <BR>　　用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and 下划线 ('_'). 服务器名字也是符合这个规则,当然下划线除外. <BR><BR>　　现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符，好现在我们来看一下怎么为用户名写一个匹配模式: <BR><BR>　　^[_a-zA-Z0-9-]+$ </P>
<P>　　现在还不能允许句号的存在. 我们把它加上: <BR>　　^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ </P>
<P>　　上面的意思就是说: "以至少一个规范字符（除了.）开头,后面跟着0个或者多个以点开始的字符串." </P>
<P><BR clear=all></P>
<P>　　简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" – 只需要指定一个就可以了: <BR>　　^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ </P>
<P>　　后面的服务器名字也是一样,但要去掉下划线: <BR>　　^[a-z0-9-]+(\.[a-z0-9-]+)*$ </P>
<P>　　好. 现在只需要用”@”把两部分连接: <BR>　　^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ <BR><BR>　　这就是完整的email认证匹配模式了,只需要调用 <BR>　　eregi(‘^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ ’,$eamil) <BR>　　就可以得到是否为email了 </P>
<P>　　<STRONG>正则表达式的其他用法</STRONG></P>
<P>　　提取字符串 <BR>　　ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分，比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: <BR>　　ereg("([^\\/]*)$", $pathOrUrl, $regs); <BR>　　echo $regs[1]; </P>
<P>　　高级的代换 <BR>　　ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号: <BR>　　ereg_replace("[ \n\r\t]+", ",", trim($str));</P>
<P>　　最后,我把另一串检查EMAIL的正则表达式让看文章的你来分析一下.<BR>　　<STRONG><FONT color=#000099>"^[-!#$%&amp;\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&amp;\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&amp;\'*+\\./0-9=?A-Z^_`a-z{|}~]+$"<BR></FONT></STRONG>　　如果能方便的读懂,那这篇文章的目的就达到了.</P>]]></description>
			<link>http://shulinge.com/show-410-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2006-12-25 10:19</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-386-1.html</guid>
			<title>Mysql的常用命令</title>
			<author>shulinge</author>
			<description><![CDATA[<P>&nbsp;Mysql的常用命令</P>
<P><BR>格式： mysql -h主机地址 -u用户名 －p用户密码 </P>
<P>1、例1：连接到本机上的MYSQL。 </P>
<P>首先在打开DOS窗口，然后进入目录 mysqlbin，再键入命令mysql -uroot -p，回车后提示你输密码，如果刚安装好MYSQL，超级用户root是没有密码的，故直接回车即可进入到MYSQL中了，MYSQL的提示符是：mysql&gt; </P>
<P>2、例2：连接到远程主机上的MYSQL。假设远程主机的IP为：110.110.110.110，用户名为root,密码为abcd123。则键入以下命令： </P>
<P>mysql -h110.110.110.110 -uroot -pabcd123 </P>
<P>（注:u与root可以不用加空格，其它也一样） </P>
<P>3、退出MYSQL命令： exit （回车） </P>
<P>二、修改密码。 </P>
<P>格式：mysqladmin -u用户名 -p旧密码 password 新密码 </P>
<P>1、例1：给root加个密码ab12。首先在DOS下进入目录mysqlbin，然后键入以下命令 </P>
<P>mysqladmin -uroot -password ab12 </P>
<P>注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。 </P>
<P>2、例2：再将root的密码改为djg345。 </P>
<P>mysqladmin -uroot -pab12 password djg345 </P>
<P>三、增加新用户。（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符） </P>
<P>格式：grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" </P>
<P>例1、增加一个用户test1密码为abc，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL，然后键入以下命令： </P>
<P>grant select,insert,update,delete on *.* to <A>test1@\"%\</A>" Identified by \"abc\"; </P>
<P>但例1增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，解决办法见例2。 </P>
<P>例2、增加一个用户test2密码为abc,让他只可以在localhost上登录，并可以对数据库mydb进行查询、插入、修改、删除的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），这样用户即使用知道test2的密码，他也无法从internet上直接访问数据库，只能通过MYSQL主机上的web页来访问了。 </P>
<P>grant select,insert,update,delete on mydb.* to <A href="mailto:test2@localhost">test2@localhost</A> identified by \"abc\"; </P>
<P>如果你不想test2有密码，可以再打一个命令将密码消掉。 </P>
<P>grant select,insert,update,delete on mydb.* to <A href="mailto:test2@localhost">test2@localhost</A> identified by \"\"; </P>
<P>在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意：你必须首先登录到MYSQL中，以下操作都是在MYSQL的提示符下进行的，而且每个命令以分号结束。 </P>
<P>一、操作技巧 </P>
<P>1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。 </P>
<P>2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。 </P>
<P>二、显示命令 </P>
<P>1、显示数据库列表。 </P>
<P>show databases; </P>
<P>刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 </P>
<P>2、显示库中的数据表： </P>
<P>use mysql； ／／打开库，学过FOXBASE的一定不会陌生吧 </P>
<P>show tables; </P>
<P>3、显示数据表的结构： </P>
<P>describe 表名; </P>
<P>4、建库： </P>
<P>create database 库名; </P>
<P>5、建表： </P>
<P>use 库名； </P>
<P>create table 表名 (字段设定列表)； </P>
<P>6、删库和删表: </P>
<P>drop database 库名; </P>
<P>drop table 表名； </P>
<P>7、将表中记录清空： </P>
<P>delete from 表名; </P>
<P>8、显示表中的记录： </P>
<P>select * from 表名; </P>
<P>三、一个建库和建表以及插入数据的实例 </P>
<P>drop database if exists school; //如果存在SCHOOL则删除 </P>
<P>create database school; //建立库SCHOOL </P>
<P>use school; //打开库SCHOOL </P>
<P>create table teacher //建立表TEACHER </P>
<P>( </P>
<P>id int(3) auto_increment not null primary key, </P>
<P>name char(10) not null, </P>
<P>address varchar(50) default ’深圳’, </P>
<P>year date </P>
<P>); //建表结束 </P>
<P>//以下为插入字段 </P>
<P>insert into teacher values(’’,’glchengang’,’深圳一中’,’1976-10-10’); </P>
<P>insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’); </P>
<P>注：在建表中（1）将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key（2）将NAME设为长度为10的字符字段（3）将ADDRESS设为长度50的字符字段，而且缺省值为深圳。varchar和char有什么区别呢，只有等以后的文章再说了。（4）将YEAR设为日期字段。 </P>
<P>如果你在mysql提示符键入上面的命令也可以，但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql，然后复制到c:\\下，并在DOS状态进入目录<A href="file://\\mysql\\bin">\\mysql\\bin</A>，然后键入以下命令： </P>
<P>mysql -uroot -p密码 &lt; c:\\school.sql </P>
<P>如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你只要将//的注释去掉即可使用）。 </P>
<P>四、将文本数据转到数据库中 </P>
<P>1、文本数据应符合的格式：字段数据之间用tab键隔开，null值用<A href="file://\\n">\\n</A>来代替. </P>
<P>例： </P>
<P>3 rose 深圳二中 1976-10-10 </P>
<P>4 mike 深圳一中 1975-12-23 </P>
<P>2、数据传入命令 load data local infile \"文件名\" into table 表名; </P>
<P>注意：你最好将文件复制到<A href="file://\\mysql\\bin">\\mysql\\bin</A>目录下，并且要先用use命令打表所在的库。 </P>
<P>五、备份数据库：（命令在DOS的<A href="file://\\mysql\\bin">\\mysql\\bin</A>目录下执行） </P>
<P>mysqldump --opt school&gt;school.bbb </P>
<P>注释:将数据库school备份到school.bbb文件，school.bbb是一个文本文件，文件名任取，打开看看你会有新发现。 </P>
<P>后记：其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异，您最好找本将SQL的书看看。我在这里只介绍一些基本的，其实我也就只懂这些了，呵呵。最好的MYSQL教程还是“晏子“译的“MYSQL中文参考手册“不仅免费每个相关网站都有下载，而且它是最权威的。可惜不是象\"PHP4中文手册\"那样是chm的格式，在查找函数命令的时候不太方便<BR></P>]]></description>
			<link>http://shulinge.com/show-386-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2006-05-20 17:26</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-317-1.html</guid>
			<title>mysql数据库批量导入和执行程序</title>
			<author>shulinge</author>
			<description><![CDATA[<P>演示:http://shulinge.com/php/mysqladmin.php</P>
<P>代码如下：</P><SPAN style="FONT-SIZE: 12px">&lt;?<BR><BR>// 允许脚本在register globals =off 时工作<BR>$onoff =@ini_get('register_globals')||get_cfg_var('register_globals');<BR><BR>if ($onoff != 1) {<BR>&nbsp; &nbsp; @extract($_POST, EXTR_SKIP);<BR>&nbsp; &nbsp; @extract($_GET, EXTR_SKIP);<BR>}<BR><BR>// 去掉转义字符<BR>function stripslashes_array(&amp;$array) {<BR>&nbsp; &nbsp; while(list($key,$var) = each($array)) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if ($key != 'argc' &amp;&amp; $key != 'argv' &amp;&amp; (strtoupper($key) != $key || ''.intval<BR>($key) == "$key")) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if (is_string($var)) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $array[$key] = stripslashes($var);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if (is_array($var))&nbsp;&nbsp;{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $array[$key] = stripslashes_array($var);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<BR>&nbsp; &nbsp; }<BR>&nbsp; &nbsp; return $array;<BR>}<BR><BR>// 若 magic_quotes_gpc 打开，调用 stripslashes_array（）函数去掉转义字符<BR>if (get_magic_quotes_gpc()) {<BR>&nbsp; &nbsp; $_POST = stripslashes_array($_POST);<BR>}<BR>?&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR>&lt;title&gt;mysql数据库批量导入和执行程序&lt;/title&gt;<BR>&lt;style type="text/css"&gt;<BR>body,td {<BR>&nbsp; &nbsp; font-family: "sans-serif";<BR>&nbsp; &nbsp; font-size: "12px";<BR>&nbsp; &nbsp; line-height: "150%";<BR>}<BR>.INPUT {<BR>&nbsp; &nbsp; FONT-SIZE: "12px";<BR>&nbsp; &nbsp; COLOR: "#000000";<BR>&nbsp; &nbsp; BACKGROUND-COLOR: "#FFFFFF";<BR>&nbsp; &nbsp; height: "18px";<BR>&nbsp; &nbsp; border: "1px solid #666666";<BR>}<BR>&lt;/style&gt;<BR>&lt;/head&gt;<BR>&lt;body style="table-layout:fixed; word-break:break-all"&gt;<BR>&lt;center&gt;<BR><BR>&lt;?<BR>if ($_GET['action'] == "sql") {<BR>&nbsp; &nbsp; $servername = isset($servername) ? $servername : 'localhost';<BR>&nbsp; &nbsp; $dbusername = isset($dbusername) ? $dbusername : 'root';<BR>&nbsp; &nbsp; $dbpassword = isset($dbpassword) ? $dbpassword : '';<BR>&nbsp; &nbsp; $dbname = isset($dbname) ? $dbname : '';<BR>}<BR>if($doquery) {<BR>&nbsp; &nbsp; if(@mysql_connect($servername,$dbusername,$dbpassword) AND @mysql_select_db($dbname))<BR>&nbsp; &nbsp; {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;echo "数据库连接执行!\n";<BR>&nbsp; &nbsp; }<BR>&nbsp; &nbsp; else<BR>&nbsp; &nbsp; {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;echo "出错: ".mysql_error();<BR>&nbsp; &nbsp; }<BR>&nbsp; &nbsp; $a_query = explode(";",$_POST['sql_query']);<BR>&nbsp; &nbsp; while (list(,$query) = each($a_query)) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$query = trim($query);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if ($query) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if (strstr($query,'CREATE TABLE')) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ereg('CREATE TABLE ([^ ]*)',$query,$regs);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mysql_query("DROP TABLE IF EXISTS $regs[1]");<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo "&lt;p&gt;正在建立表: ".$regs[1]." …… ";<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$result=@mysql_query($query);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if ($result)<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "成功!&lt;/p&gt;\n";<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "失败!&lt;/p&gt;\n";<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;} else {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $result=@mysql_query($query);<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; echo ($result) ? "SQL语句成功执行\n" : "出错: ".mysql_error();<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<BR><BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<BR>&nbsp; &nbsp; }<BR>&nbsp; &nbsp; mysql_close();<BR>}<BR><BR>elseif(connect){<BR>&nbsp; &nbsp; if(@mysql_connect($servername,$dbusername,$dbpassword) AND @mysql_select_db($dbname)) {<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;echo "数据库连接执行!\n";<BR>&nbsp; &nbsp; }else{<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;echo "出错: ".mysql_error();<BR>&nbsp; &nbsp; }<BR>}<BR>?&gt;<BR>&lt;table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff"&gt;<BR>&nbsp;&nbsp;&lt;tr class="firstalt"&gt;<BR>&nbsp; &nbsp; &lt;td align="center"&gt;mysql数据库批量导入和执行程序&lt;/td&gt;<BR>&nbsp;&nbsp;&lt;/tr&gt;<BR>&nbsp;&nbsp;&lt;form action="?action=sql" method="POST"&gt;<BR>&nbsp;&nbsp;&lt;tr class="secondalt"&gt;<BR>&nbsp; &nbsp; &lt;td align="center"&gt;Host:<BR>&nbsp; &nbsp; &lt;input name="servername" type="text" class="INPUT" value="&lt;?=$servername?&gt;"&gt; <BR>&nbsp; &nbsp; User:<BR>&nbsp; &nbsp; &lt;input name="dbusername" type="text" class="INPUT" size="15" value="&lt;?=$dbusername?&gt;"&gt;<BR>&nbsp; &nbsp; Pass:<BR>&nbsp; &nbsp; &lt;input name="dbpassword" type="text" class="INPUT" size="15" value="&lt;?=$dbpassword?&gt;"&gt;<BR>&nbsp; &nbsp; DB:<BR>&nbsp; &nbsp; &lt;input name="dbname" type="text" class="INPUT" size="15" value="&lt;?=$dbname?&gt;"&gt;<BR>&nbsp; &nbsp; &lt;input name="connect" type="submit" class="INPUT" value="连接"&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&lt;/tr&gt;<BR>&nbsp;&nbsp;&lt;tr class="firstalt"&gt;<BR>&nbsp; &nbsp; &lt;td align="center"&gt;&lt;textarea name="sql_query" cols="85" rows="10"&gt;&lt;/textarea&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&lt;/tr&gt;<BR>&nbsp;&nbsp;&lt;tr class="secondalt"&gt;<BR>&nbsp; &nbsp; &lt;td align="center"&gt;&lt;input type="submit" name="doquery" value="执行" class="input"&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/form&gt;<BR>&lt;/table&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</SPAN>
<P><SPAN class=smalltxt><SPAN class=bold></SPAN></SPAN>&nbsp;</P>]]></description>
			<link>http://shulinge.com/show-317-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2006-02-22 10:50</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-308-1.html</guid>
			<title>phpmyadmin怎么连接远程mysql</title>
			<author>shulinge</author>
			<description><![CDATA[<SPAN class=tpc_content>&nbsp;如果你直接连接的时候出现：不允许连接数据库或者 connect refuse<BR>解决办法：<BR><BR>打开：config.inc.php<BR><BR>1更改登陆验证方式<BR>查找 $cfg['servers'][$i][auth_type']<BR>将值改成cookie<BR>2 更改phpmyadmin的网址<BR>查找$cfg['pmaabsoluteUri']<BR>其值改成你的phpmyadmin的地址<BR>类似于 <A href="http://www.demo.com/phpmyadmin" target=_blank>www.demo.com/phpmyadmin</A><BR>3更改默认登陆语言<BR>查找$cfg['DefaultLang']<BR>其值改成zh</SPAN>]]></description>
			<link>http://shulinge.com/show-308-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2006-02-09 08:39</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-278-1.html</guid>
			<title>一款不错的PHP硬盘程序</title>
			<author>shulinge</author>
			<description><![CDATA[<P>演示：<A href="http://www.phpxplorer.org">http://www.phpxplorer.org</A></P>
<P>下载。。 官方有的说。。</P>]]></description>
			<link>http://shulinge.com/show-278-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2006-01-14 16:53</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-220-1.html</guid>
			<title> MYSQL的使用</title>
			<author>shulinge</author>
			<description><![CDATA[<SPAN class=tpc_content>&nbsp;&nbsp;&nbsp;&nbsp; 有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。 <BR>一、连接MYSQL。 <BR>格式： mysql -h主机地址 -u用户名 －p用户密码 <BR>1、例1：连接到本机上的MYSQL。 <BR>首先在打开DOS窗口，然后进入目录 mysqlbin，再键入命令mysql -uroot -p，回车后提示你输密码，如果刚安装好MYSQL，超级用户root是没有密码的，故直接回车即可进入到MYSQL中了，MYSQL的提示符是：mysql&gt; <BR>2、例2：连接到远程主机上的MYSQL。假设远程主机的IP为：110.110.110.110，用户名为root,密码为abcd123。则键入以下命令： <BR>mysql -h110.110.110.110 -uroot -pabcd123 <BR>（注:u与root可以不用加空格，其它也一样） <BR>3、退出MYSQL命令： exit （回车） <BR>二、修改密码。 <BR>格式：mysqladmin -u用户名 -p旧密码 password 新密码 <BR>1、例1：给root加个密码ab12。首先在DOS下进入目录mysqlbin，然后键入以下命令 <BR>mysqladmin -uroot -password ab12 <BR>注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。 <BR>2、例2：再将root的密码改为djg345。 <BR>mysqladmin -uroot -pab12 password djg345 <BR>三、增加新用户。（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符） <BR>格式：grant select on 数据库.* to 用户名@登录主机 identified by "密码" <BR>例1、增加一个用户test1密码为abc，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL，然后键入以下命令： <BR>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; <BR>但例1增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，解决办法见例2。 <BR>例2、增加一个用户test2密码为abc,让他只可以在localhost上登录，并可以对数据库mydb进行查询、插入、修改、删除的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），这样用户即使用知道test2的密码，他也无法从internet上直接访问数据库，只能通过MYSQL主机上的web页来访问了。 <BR>grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; <BR>如果你不想test2有密码，可以再打一个命令将密码消掉。 <BR>grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; <BR><BR>(下篇) <BR>在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意：你必须首先登录到MYSQL中，以下操作都是在MYSQL的提示符下进行的，而且每个命令以分号结束。 <BR><BR>一、操作技巧 <BR>1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。 <BR>2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。 <BR><BR>二、显示命令 <BR>1、显示数据库列表。 <BR>show databases; <BR>刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 <BR>2、显示库中的数据表： <BR>use mysql； ／／打开库，学过FOXBASE的一定不会陌生吧 <BR>show tables; <BR>3、显示数据表的结构： <BR>describe 表名; <BR>4、建库： <BR>create database 库名; <BR>5、建表： <BR>use 库名； <BR>create table 表名 (字段设定列表)； <BR>6、删库和删表: <BR>drop database 库名; <BR>drop table 表名； <BR>7、将表中记录清空： <BR>delete from 表名; <BR>8、显示表中的记录： <BR>select * from 表名; <BR><BR>三、一个建库和建表以及插入数据的实例 <BR>drop database if exists school; //如果存在SCHOOL则删除 <BR>create database school; //建立库SCHOOL <BR>use school; //打开库SCHOOL <BR>create table teacher //建立表TEACHER <BR>( <BR>id int(3) auto_increment not null primary key, <BR>name char(10) not null, <BR>address varchar(50) default 深圳, <BR>year date <BR>); //建表结束 <BR>//以下为插入字段 <BR>insert into teacher valuess(,glchengang,深圳一中,1976-10-10); <BR>insert into teacher valuess(,jack,深圳一中,1975-12-23); <BR><BR>注：在建表中（1）将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key（2）将NAME设为长度为10的字符字段（3）将ADDRESS设为长度50的字符字段，而且缺省值为深圳。varchar和char有什么区别呢，只有等以后的文章再说了。 （4）将YEAR设为日期字段。 <BR>如果你在mysql提示符键入上面的命令也可以，但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql，然后复制到c:下，并在DOS状态进入目录mysqlbin，然后键入以下命令： <BR>mysql -uroot -p密码 &lt; c:school.sql <BR>如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你只要将//的注释去掉即可使用）。 <BR><BR>四、将文本数据转到数据库中 <BR>1、文本数据应符合的格式：字段数据之间用tab键隔开，null值用n来代替. <BR>例： <BR>3 rose 深圳二中 1976-10-10 <BR>4 mike 深圳一中 1975-12-23 <BR>2、数据传入命令 load data local infile "文件名" into table 表名; <BR>注意：你最好将文件复制到mysqlbin目录下，并且要先用use命令打表所在的库 。 <BR><BR>五、备份数据库：（命令在DOS的mysqlbin目录下执行） <BR>mysqldump --opt school&gt;school.bbb <BR>注释:将数据库school备份到school.bbb文件，school.bbb是一个文本文件，文件名任取，打开看看你会有新发现。 <BR><BR>后记：其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异，您最好找本将SQL的书看看。我在这里只介绍一些基本的，其实我也就只懂这些了，呵呵。最好的MYSQL教程还是“晏子“译的“MYSQL中文参考手册“不仅免费每个相关网站都有下载，而且它是最权威的。可惜不是象"PHP4中文手册"那样是chm的格式，在查找函数命令的时候不太方便 <BR></SPAN><BR>]]></description>
			<link>http://shulinge.com/show-220-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-11-07 00:14</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-214-1.html</guid>
			<title>php小偷实例教程</title>
			<author>shulinge</author>
			<description><![CDATA[以 <A href="http://mtv.8391.com/" target=_blank>http://mtv.8391.com/</A> 为例，偷取mtv名称、歌手、路径 <BR><BR>1、对原网站进行代码分析 <BR>首先确定视听mtv的地址是： <A href="http://mtv.8391.com/player.asp?id=ID" target=_blank>http://mtv.8391.com/player.asp?id=ID</A> <BR>查看其原文件，判断出调用mtv路径的文件： <A href="http://mtv.8391.com/Yxwen.asp?id=ID" target=_blank>http://mtv.8391.com/Yxwen.asp?id=ID</A> <BR>利用代码查看程序，取得 <A href="http://mtv.8391.com/Yxwen.asp?id=3488" target=_blank>http://mtv.8391.com/Yxwen.asp?id=3488</A>页面代码（3488为随机，只是了解页面代码） <BR>2、对要偷取的页面进行代码分析 <BR><A href="http://mtv.8391.com/Yxwen.asp?id=3488" target=_blank>http://mtv.8391.com/Yxwen.asp?id=3488</A>页面代码如下： <BR>CODE: ]]></description>
			<link>http://shulinge.com/show-214-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-11-05 01:04</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-213-1.html</guid>
			<title>如何防止盗链</title>
			<author>shulinge</author>
			<description><![CDATA[<P>例子: <BR>dl.php </P>
<P>PHP:</P>
<P>&lt;?php]]></description>
			<link>http://shulinge.com/show-213-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-11-05 01:01</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-212-1.html</guid>
			<title>判断ICQ是否在线的代码</title>
			<author>shulinge</author>
			<description><![CDATA[<P>&nbsp;</P>
<P>function get_status($uin) <BR>{ <BR>$fp = fsockopen ("wwp.icq.com", 80, &amp;$errno, &amp;$errstr, 30); <BR>if(!$fp) <BR>{ <BR>echo "$errstr ($errno) <BR>"; <BR>} <BR>else <BR>{ <BR>fputs($fp, "GET /scripts/online.dll?icq=$uin&amp;img=5 HTTP/1.0 "); <BR>$do = 'yes' <BR>while(!feof($fp)) <BR>{ <BR>$line = fgets ($fp,128); <BR>$do = ($do == 'yes')?'yes':(eregi("^GIF89", $line))?'yes':'no' <BR>//echo $line; </P>
<P>if($do == 'yes') <BR>{ <BR>if(ereg("@", $line)) <BR>{ <BR>return 'online' <BR>} <BR>elseif(ereg("醱", $line)) <BR>{ <BR>return 'offline' <BR>} <BR>elseif(ereg("S", $line)) <BR>{ <BR>return 'disabled' <BR>} <BR>} </P>
<P>} <BR>fclose($fp); <BR>} <BR>return 'unknown!' <BR>} </P>
<P><BR>$uin="194963914"; // ICQ号<BR>echo get_status($uin); <BR>// offline <BR>// HTTP/1.0 200 OK Content-type: image/gif GIF89a <BR>// online <BR>// HTTP/1.0 200 OK Content-type: image/gif GIF89a </P>
<P>&nbsp;</P>]]></description>
			<link>http://shulinge.com/show-212-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-11-05 00:59</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-195-1.html</guid>
			<title>修正Sablog2.6按月归档十月份显示为一月份的Bug</title>
			<author>shulinge</author>
			<description><![CDATA[查找：global.php 约第158行<BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 5px; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 5px; MARGIN: 5px 20px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid">$e_month = str_replace("0", "", $p_month); </DIV><BR><BR>替换为： <BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 5px; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 5px; MARGIN: 5px 20px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid">if ($p_month[0]=="0") <BR>&nbsp;&nbsp;$e_month = str_replace("0", "", $p_month); <BR>else $e_month = $p_month; </DIV>
<P>&nbsp;</P>
<P>转自：</P>
<P><A href="http://www.zjtv.com.ru/index.php?action=show&amp;id=471">http://www.zjtv.com.ru/index.php?action=show&amp;id=471</A></P>
<P>&nbsp;</P>]]></description>
			<link>http://shulinge.com/show-195-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-10-26 18:47</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-193-1.html</guid>
			<title>Discuz!4.0破解方法</title>
			<author>shulinge</author>
			<description><![CDATA[<P>打开</P>
<P>include\validate.class.php</P>
<P>换成已下代码</P>
<P><BR>&lt;?php<BR>&nbsp; class licensestuff<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var $data = '';<BR>&nbsp;&nbsp;&nbsp; var $key = array ();<BR>&nbsp;&nbsp;&nbsp; var $env = array ();<BR>&nbsp;&nbsp;&nbsp; function readfile ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; if ($fp = fopen ((DISCUZ_ROOT.'./discuz_license.php'), 'r'))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;data = fread ($fp, 9999);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose ($fp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function initialize ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;readfile ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($this-&gt;data)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (explode ('<BR>', $this-&gt;data) as $string)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (strpos ($string, ' = '))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval (preg_replace (((((((((((((''.'/^(').'[').'a-z0-9').'\\-').']').'+)').'\\s').'\\=').'\\s').'(.+?)').'$').'/i'), '$this-&gt;key[\'\\1\'] = \'\\2\';', trim (str_replace ('\'', '\\\'', $string))));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (preg_match ('/\\&lt;<A href="file://\\?\'.+\'\\?\\>/'">\\?\'.+\'\\?\\&gt;/'</A>, $string))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;key['Validation-code'] = $this-&gt;decrypt (preg_replace ('/\\&lt;<A href="file://\\?\'(.+)\'\\?\\>/'">\\?\'(.+)\'\\?\\&gt;/'</A>, '\\1', $string), 'I love my father, mother, my Grace, and my self, I am working hard', <A href="mailto:'##@Crossday">'##@Crossday</A> <A href="mailto:Studio@##'">Studio@##'</A>);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getenvinfo ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((strtoupper (substr (PHP_OS, 0, 3)) == 'WIN') AND in_array ($GLOBALS['_SERVER']['HTTP_HOST'], array ('localhost', '127.0.0.1'))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }*/</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function checkinfo ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((substr ($this-&gt;key['Validation-code'], 16, 8) == substr (md5 (preg_replace (((((((((((((''.'/^(.+?)').'\\s').'*').'\\&lt;').'\\?').'\\\'').'.+').'\\\'').'\\?').'\\&gt;').'$').'/s'), '\\1', $this-&gt;data)), 0, 8)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function checkdate ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((!$this-&gt;key['License-expires'] OR (time () &lt; strtotime ($this-&gt;key['License-expires']))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function checkkey ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((substr ($this-&gt;key['Validation-code'], 8, 8) == substr (md5 ((((((((($this-&gt;env['os'].'|').$this-&gt;env['ip']).'|').$this-&gt;env['sapi']).'|').$this-&gt;env['cpu']).'|').$this-&gt;env['name'])), 0, 8)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function checkhostpath ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((((substr ($this-&gt;key['Validation-code'], 24, 6) == ((dechex (ord ('d')).dechex (ord ('z'))).dechex (ord ('k')))) OR (substr ($this-&gt;key['Validation-code'], 0, 8) == substr (md5 ($this-&gt;env['host']), 0, 8))) OR (substr ($this-&gt;key['Validation-code'], 24, 8) == substr (md5 ($this-&gt;env['path']), 0, 8))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function getenvinfo ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global $_SERVER;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global $_POST;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global $_ENV;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['time'] = gmdate ('d-M-Y', time ());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['os'] = PHP_OS;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['ip'] = getenv ('SERVER_ADDR');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['sapi'] = php_sapi_name ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['host'] = (getenv ('HTTP_HOST') ? getenv ('HTTP_HOST') : $_SERVER['HTTP_HOST']);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['path'] = dirname (('validate.class.php.LkuQHr' ? dirname ('validate.class.php.LkuQHr') : getenv ('SCRIPT_FILENAME')));//********<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['cpu'] = (($_ENV['PROCESSOR_IDENTIFIER'].'/').$_ENV['PROCESSOR_REVISION']);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $env['name'] = $_ENV['COMPUTERNAME'];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;env = $env;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function decrypt ($txt, $key, $owner = '')<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $txt = $this-&gt;keyED (base64_decode ($txt), (($owner == <A href="mailto:'##@Crossday">'##@Crossday</A> <A href="mailto:Studio@##'">Studio@##'</A>) ? $key : ''));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmp = '';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ($i = 0; ($i &lt; strlen ($txt)); $i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $md5 = $txt[$i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ($tmp .= ($txt[$i] ^ $md5));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $tmp;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function keyed ($txt, $encrypt_key)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $encrypt_key = md5 ($encrypt_key);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ctr = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmp = '';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ($i = 0; ($i &lt; strlen ($txt)); $i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (($ctr == strlen ($encrypt_key)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ctr = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ($tmp .= ($txt[$i] ^ $encrypt_key[$ctr]));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ctr++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $tmp;<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; function validate ()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $init = $this-&gt;initialize ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((($init == 2) OR ((((($init == 1) AND $this-&gt;checkinfo ()) AND $this-&gt;checkdate ()) AND $this-&gt;checkkey ()) AND $this-&gt;checkhostpath ())))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (($init == 2))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; define ('DISCUZ_LICENSE_KEY', md5 ((base64_decode ('ISgqISEpQCZfRGlzY3V6IV9pc19SdW5uaW5nX3VuZGVyX0xvY2FsaG9zdA').md5 (((('#19811027_'.'DZK_').'WROTE_Discuz!_').substr (time (), 0, (0 - 2)))))));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; define ('DISCUZ_LICENSE_KEY', md5 ((base64_decode ('ISgqISEpQCZfRGlzY3V6IV9XSUxMX1dJTl9USEVfRlVUVVJFX0ZST01fTk9XX09O').md5 (((('#19811027_'.'DZK_').'WROTE_Discuz!_').substr (time (), 0, (0 - 2)))))));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo '&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;Invalid License File&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body bgcolor="#FFFFFF"&gt;<BR>&lt;table cellpadding="0" cellspacing="0" border="0" width="600" align="center" height="85%"&gt;<BR>&nbsp; &lt;tr align="center" valign="middle"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family: Verdana, Tahoma; color: #666666; font-size: 12px"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td valign="m';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo 'iddle" bgcolor="#EBEBEB"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;&lt;b style="font-size: 20px"&gt;Your License was Invalid&lt;/b&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;&lt;br&gt;License expiring, shifting to a new server, changing server IP, hardware, OS, PHP SAPI module, or, changing both host name and absolute directory on your disk, may invalidate your license. If you have trouble in activation, please visit &lt;a href="<A href="http://www.discuz.com/license/">http://www.discuz.com/license/</A>" target="_blank"&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo 'http://www.discuz.com/license/&lt;/a&gt; for more information.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;&lt;br&gt;您的密匙不存在、超过有效期、更换新的服务器空间、更改 IP 地址、硬件、操作系统、PHP 安装模&amp;';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo '#x5F0F;，或同时改变绝对路径或访问域名，都可能导致密匙失效。请访问 &lt;a href="<A href="http://www.discuz.com/license/">http://www.discuz.com/license/</A>" target="_blank"&gt;http://www.discuz.com/license/&lt;/a&gt; 重新生成密匙。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;&lt;b';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo 'r&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/td&gt;<BR>&nbsp; &lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR>';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }</P>
<P>&nbsp; if (!defined ('IN_DISCUZ'))<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; exit ('Access Denied');<BR>&nbsp; }</P>
<P>&nbsp; $license = new licensestuff ();<BR>&nbsp; $license-&gt;validate ();<BR>&nbsp; unset ($license);<BR>?&gt;<BR>再在根目录新建个 discuz_license.php</P>
<P>内容为</P>
<P><BR># !ATTENTION! PLEASE DO NOT OPEN FOR EDITING<BR># ANY MODIFICATION WILL INVALIDATE THIS LICENSE</P>
<P>Product-name = Discuz! Board Retail<BR>License-issued = 16-Jul-2005</P>
<P>Registered-to = cheewick!<BR>Registered-URL = <A href="http://127.0.0.1/discuz/">http://127.0.0.1/discuz/</A><BR></P>]]></description>
			<link>http://shulinge.com/show-193-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-10-25 14:05</pubDate>
		</item>
		<item>
			<guid>http://shulinge.com/show-166-1.html</guid>
			<title>  解密ZEND加密后的PHP文件</title>
			<author>shulinge</author>
			<description><![CDATA[转个帖子 大家看看。。
http://www.zjtv.net.ru/index.php?action=show&id=451#comment

先下载 http://pecl.php.net/get/vld-0.8.0.tgz

执行
#tar -xzf vld-0.8.0.tgz //解压
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷贝vld目录到php的解压目录下的ext中
#cd php-4.3.8
#rm configure //删除configure, 因为下面的buildconf会重新生成新的configure
#./buildconf //如果出现错误, 就按提示加上相应的参数.
#./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新检查php
#make 编译
#make install 安装

服务器必须先安装ZendOptimizer
运行Zend后的文件, 查看源代码就可以看到了.]]></description>
			<link>http://shulinge.com/show-166-1.html</link>
			<category domain="http://shulinge.com/category-2-1.html">编程设计</category>
			<pubDate>2005-09-25 15:03</pubDate>
		</item>
	</channel>
</rss>
