??xml version="1.0" encoding="utf-8" standalone="yes"?> Q注意事?安装q程QQ何目录和文g名都不要使用I格Q不要用D:"Program Files 而要使用D:"ProgramFiles,目录名不要包含空|否则下面讄php?x)出错?j) Windows?strong>PHP环境安装Q第一步:(x)Apache安装图文介绍Q?/p>
1、双击apache_2.2.10-win32-x86-no_ssl.msi会(x)打开如下界面Q?/p>
2、点击Nextq入下一个界?/p>
q里选择 I accept the terms in the license agreement (译Q我接受许可协议中的条款) 3、选中后点击Nextq入下一个界面(q是对Apache的一个大致的介绍Q请直接点击下一步)(j) 4、选中后点击Nextq入下一个界面(q是对Apache的一个大致的介绍Q请直接点击下一步)(j) q里他要求你填写你的服务器的基本信息Q这里可以随便填写?/p>
5、选中后点击Nextq入下一个界面(q是让你选择自定义安装或者是典型安装Q这里我们选择Custom自定义安装)(j) 5、选中后点击Nextq入下一个界面(q是让你选择自定义安装或者是典型安装Q这里我们选择Custom自定义安装)(j) 选择(zhn)的安装位置然后点击OK,q入下一个界面,直接点击Next,q入安装Q再直接点击Install界面Q?/p>
5、当他复制完文g后会(x)对系l做一个基本的配置Q正式完成时如下界面Q?/p>
安装l束后,apache自动q行Q在览器里输入http://127.0.0.1?
不是昄Z(jin)默认的网,如果出现一个默认的主页如果你不希望看到q个面Q可以到D:"PHPServer"Apache2"conf目录下找?
httpd.conf 打开~辑Qƈ查找 DocumentRoot"?.0pd的版本中Q找C个DocumentRoot"
Q把引号内的路径改ؓ(f)你自q路径可以了(jin)Q比?DocumentRoot “F:/WEB_PHP” 现在默认的根目录是
D:/HPServer/Apache2.2/htdocs
注意q里用的?/",我的现在Ҏ(gu)?jin)?x)F:/WEB_PHP,q有一处是Q?lt;Directory
"D:"PHPServer"Apache2"conf">Q这里也要改的?/p>
注意问题Q当你安装完成后很多情况下Apache是没有运行的Q在你电(sh)脑右下角的地Ҏ(gu)C?img alt="apache没有启动" src="http://www.nbexpo2010.com/uploadfile/2011/0314 /apacheError.jpg" height="36" width="41" />着表明你的Apache没有启动。这U情冉|可能是你?apache的默认端?0端口暂时被其他Y件占用造成的。你只需要重启你的电(sh)脑就可以?jin)。正常状态ؓ(f)Q?img alt="apache正常启动" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apacheOk.jpg" &="" gt;?"" /> 到现在ؓ(f)止Windows?strong>PHP环境安装Q第一步:(x)Apache安装应经完成?a href="http://www.tkk7.com/DreamFight/articles/349237.html#home">q回头部< /a> 一、Mysql安装?/p>
1、打开Mysql文g夹中的setup.ex出现如下界面Q?/p>
2?直接点击Nextq入下一个界面:(x) q是让你选择安装的类型?/p>
Typical为典型安装,q个是Mysql推荐的一U安装方式,他满了(jin)大部分的用户需求,你可以选择q个?/p>
Complete为完全安装它?x)把Mysql的全部功能都安装Q但是他?x)占用大量的内存资源Q如果你不是高用户q里可以不选?/p>
Custom定义安装Q你可以选择或取消你要安装的功能Qƈ且可以自定义你的安装目录Q这里我们选择Custom?/p>
单击Next出现下一个界面:(x) 3、在q个界面里我们其他不要改动,直接选择你的安装目录Q?/p>
4、然后点击ok,q入下一个界面直接点击Install。进行安装,然后?x)出现如下界面?x) q里是询问你是否要注册一个mysql.com的̎P或是使用已有的̎L(fng)陆mysql.com 5、一般不需要了(jin)Q点?#8220;Skip Sign-Up”Q按“Next”略过此步骤:(x) 现在软g安装完成?jin),出现上面的界面,q里有一个很好的功能Qmysql配置向导Q不用向以前一P自己手动׃八糟的配|my.ini?jin),?
“Configure the Mysql Server now”前面的勾打上Q点“Finish”l束软g的安装ƈ启动mysql配置向导 6、这个界面是Mysql的配|界面:(x) 7、这个界面是让?zhn)选择配置方式Q?#8220;Detailed ConfigurationQ手动精配|)(j)”?#8220;Standard ConfigurationQ标准配|)(j)”Q我们选择“Detailed Configuration”Q方便熟(zhn)配|过E:(x) 8、这个界面是让?zhn)选择服务器类型,“Developer MachineQ开发测试类Qmysql占用很少资源Q?#8221;?#8220;Server
MachineQ服务器cdQmysql占用较多资源Q?#8221;?#8220;Dedicated MySQL Server
MachineQ专门的数据库服务器Qmysql占用所有可用资源)(j)”Q大家根据自qcd选择?jin),一般?#8220;Server
Machine”Q不?x)太,也不会(x)占满?x) 9、点击Nextq入以下界面q里是让(zhn)选择mysql数据库的大致用途,“Multifunctional
DatabaseQ通用多功能型Q好Q?#8221;?“Transactional Database
OnlyQ服务器cdQ专注于事务处理Q一般)(j)”?#8220;Non- Transactional Database
OnlyQ非事务处理型,较简单,主要做一些监控、记数用Q对MyISAM数据cd的支持仅限于non-
transactionalQ,随自q用途而选择?jin),我这里选择“Transactional Database Only”Q按“Next”l箋(hu)Q?/p>
10、这里是对InnoDB
Tablespaceq行配置Q就是ؓ(f)InnoDB数据库文仉择一个存储空_(d)如果修改?jin),要记住位|,重装的时候要选择一L(fng)地方Q否则可能会(x)造成?
据库损坏Q当?dng)?gu)据库做个备䆾没问题?sh)(jin),q里不详qͼ我这里没有修改,使用用默认位|,直接?#8220;Next”l箋(hu)Q?/p>
11、这里是选择(zhn)的|站的一般mysql讉K量,同时q接的数目,“Decision Support(DSS)/OLAPQ?0个左叻I(j)”?
“Online Transaction Processing(OLTP)Q?00个左叻I(j)”?#8220;Manual
SettingQ手动设|,自己输一个数Q?#8221;Q我数目Q?#8220;Decision
Support(DSS)/OLAP”Q自q服务器,应该够用?jin),?#8220;Next”l箋(hu)Q?/p>
12、是否启用TCP/IPq接Q设定端口,如果不启用,只能在自己的机器上讉Kmysql数据库了(jin)Q我q里启用Q把前面的勾?
上,Port NumberQ?306Q在q个面上,(zhn)还可以选择“启用标准模式”QEnable Strict ModeQ,q样MySQL׃?x)?
许细的语法错误Q如果?zhn)q是个新手,我徏议?zhn)取消标准模式以减麻烦(ch),但熟?zhn)MySQL以后Q尽量用标准模式,因ؓ(f)它可以降低有x(chng)据进入数据库的可
能性,?#8220;Next”l箋(hu)Q?/p>
13、这个比较重要,是对mysql默认数据库语a~码q行讄Q第一个是西文~码Q第二个是多字节的通用utf8~码Q都不是我们通用的编码,
q里选择W三个,然后在Character
Set那里选择或填?#8220;gbk”Q当然也可以?#8220;gb2312”Q区别就是gbk的字库容量大Q包括了(jin)gb2312的所有汉字,q且加上?jin)繁体字、和其它
׃八糟的字——使用mysql的时候,在执行数据操作命令之前运行一?#8220;SET NAMES
GBK;”Q运行一ơ就行了(jin)QGBK可以替换为其它|视这里的讄而定Q,可以正常的使用汉字Q或其它文字Q了(jin)Q否则不能正常显C汉字,?
“Next”l箋(hu)Q?/p>
14、选择是否mysql安装为windows服务Q还可以指定Service NameQ服务标识名Uͼ(j)Q是否将mysql的bin目录加入?
Windows PATHQ加入后Q就可以直接使用bin下的文gQ而不用指出目录名Q比如连接,“mysql.exe -uusername
-ppassword;”可以了(jin)Q不用指出mysql.exe的完整地址Q很方便Q,我这里全部打上了(jin)勾,Service
Name不变Q按“Next”l箋(hu)Q?/p>
16、一步询问是否要修改默认root用户Q超U管理)(j)的密码(默认为空Q,“New root
password”如果要修改,在此填入新密码Q如果是重装Qƈ且之前已l设|了(jin)密码Q在q里更改密码可能?x)出错,L(fng)I,q将“Modify
Security Settings”前面的勾LQ安装配|完成后另行修改密码Q,“ConfirmQ再输一遍)(j)”内再填一ơ,防止输错?
“Enable root access from remote
machinesQ是否允许root用户在其它的机器上登陆,如果要安全,׃要勾上,如果要方便,勾上它Q?#8221;?最?#8220;Create An
Anonymous
AccountQ新Z个匿名用P匿名用户可以q接数据库,不能操作数据Q包括查询)(j)”Q一般就不用勾了(jin)Q设|完毕,?#8220;Next”l箋(hu)Q?/p>
17、确认设|无误,如果有误Q按“Back”q回(g)查,?#8220;Execute”使设|生效:(x) 18、设|完毕,?#8220;Finish”l束mysql的安装与配置?/p>
注意Q?/p>
q里有一个比较常见的错误: x(chng)Mysql的安装已l完成?/p>
Z(jin)让php支持mysql,需要做如下操作: 安装phpMyAdmin: PHPMyAdmin配置 q入phpMyAdmin的管理页面以?|页下方出现mbstring的警? x(chng)Windows?strong>PHP环境安装全部安装完成了(jin)?a href="http://www.tkk7.com/DreamFight/articles/349237.html#home"> PHP正则表达式主要用于字W串的模式分剌Ӏ匹配、查扑֏(qing)替换操作。用正则表辑ּ在某些简单的环境下可能效率不高,因此如何更好的用PHP正则表达式需要综合考虑 我的PHP正则入门Q是h于网上的一文章[1]Q这文章由入q阐述?jin)PHP正则表达式用的Ҏ(gu)Q我觉得是一个很好的入门材料Q不q学?
q是要靠个hQ在使用的过E中Q还是会(x)不断地忘讎ͼ因此反反复复的阅M(jin)q篇文章有四五遍Q对于其中一些比较困隄知识点,甚至要用很久才能消化Q但是只
要能见坚持着看完Q你?x)发现自己对于正则的q用能力׃(x)显著提高?1CTO~辑推荐?a >PHP开发基入门?/p>
PHP正则表达式的定义Q?/strong> 用于描述字符排列和匹配模式的一U语法规则。它主要用于字符串的模式分割、匹配、查扑֏(qing)替换操作?/p>
PHP中的正则函数Q?/p>
PHP中有两套正则函数Q两者功能差不多Q分别ؓ(f)Q?/p>
一套是由P(pn)CREQPerl Compatible Regular ExpressionQ库提供的。?#8220;preg_”为前~命名的函敎ͼ 一套由P(pn)OSIXQPortable Operating System Interface of Unix Q扩展提供的。用以“ereg_”为前~命名的函敎ͼQPOSIX的正则函数库Q自PHP 5.3以后Q就不在推荐使用Q从PHP6以后Q就被U除Q?/p>
׃POSIX正则卛_推出历史舞台Qƈ且PCRE和perl的Ş式差不多Q更利于我们在perl和php之间切换Q所以这里重点介lPCRE正则的用?/p>
PCRE正则表达?/strong> PCRE全称为Perl Compatible Regular ExpressionQ意思是Perl兼容正则表达式? 在PCRE中,通常模式表辑ּQ即正则表达式)(j)包含在两个反斜线“/”之间Q如“/apple/”?/p>
正则中重要的几个概念有:(x)元字W、{义、模式单元(重复Q、反义、引用和断言Q这些概念都可以在文章[1]中轻杄理解和掌握?/p>
常用的元字符(Meta-character)Q?/strong> 元字W?nbsp; 说明 \A 匚w字符串串首的原子 \Z 匚w字符串串原子 \b 匚w单词的边?nbsp; /\bis/ 匚w头ؓ(f)is的字W串 /is\b/ 匚wؓ(f)is的字W串 /\bis\b/ 定界 \B 匚w除单词边界之外的L字符 /\Bis/ 匚w单词“This”中的“is” \d 匚w一个数字;{h(hun)于[0-9] \D 匚w除数字以外Q何一个字W;{h(hun)于[^0-9] \w 匚w一个英文字母、数字或下划U;{h(hun)于[0-9a-zA-Z_] \W 匚w除英文字母、数字和下划U以外Q何一个字W;{h(hun)于[^0-9a-zA-Z_] \s 匚w一个空白字W;{h(hun)于[\f\t\v] \S 匚w除空白字W以外Q何一个字W;{h(hun)于[^\f\t\v] \f 匚w一个换늬{h(hun)?\x0c ?\cL \n 匚w一个换行符Q等价于 \x0a ?\cJ \r 匚w一个回车符{h(hun)于\x0d ?\cM \t 匚w一个制表符Q等价于 \x09\或\cl \v 匚w一个垂直制表符Q等价于\x0b或\ck \oNN 匚w一个八q制数字 \xNN 匚w一个十六进制数? \cC 匚w一个控制字W?/p>
模式修正W(Pattern ModifiersQ:(x) 模式修正W在忽略大小写、匹配多行中使用特别多,掌握?jin)这一个修正符Q往往能解x(chng)们遇到的很多问题?/p>
i Q可同时匚w大小写字? M Q将字符串视为多? S Q将字符串视为单行,换行W做普通字W看待,?#8220;.”匚wM字符 X Q模式中的空白忽略不?nbsp; U Q匹配到最q的字符? e Q将替换的字W串作ؓ(f)表达使用 格式Q?apple/i匚w“apple”?#8220;Apple”{,忽略大小写?nbsp; /i PCRE的模式单元:(x) //1 提取W一位的属? /^\d{2} ([\W])\d{2}\\1\d{4}$匚w“12-31-2006”?#8220;09/27/1996”?#8220;86 01
4321”{字W串。但上述正则表达式不匚w“12/34-5678”的格式。这是因为模?#8220;[\W]”的结?#8220;/”已经被存储。下个位|?#8220;\1”引用
Ӟ其匹配模式也是字W?#8220;/”?/p>
当不需要存储匹配结果时使用非存储模式单?#8220;Q?Q)(j)” 例如/(?:a|b|c)(D|E|F)\\1g/ 匹?#8220;aEEg”。在一些正则表辑ּ中,使用非存储模式单元是必要的。否则,需要改变其后引用的序。上例还可以写成/Qa|b|cQ?C|E|F)\2g/?/p>
PCRE正则表达式函敎ͼ(x) 函数的具体用,我们可以通过PHP手册来找刎ͼ下面分n一些^时积累的正则表达式:(x) 匚waction属?nbsp; 在正则中使用回调函数 带断a的正则匹?/p>
paragraph text 替换HTML源码中的地址 最后,正则工具虽然强大Q但是从效率和编写时间上来讲Q有的时候可能没有explode来的更直接,对于一些紧急或者要求不高的dQ简单、粗暴的Ҏ(gu)也许更好?/p>
而对于preg和ereg两个pd之间的执行效率,曄到文章说preg要更快一点,具体׃使用ereg的时候ƈ不多Q而且也要推出历史舞台?jin),再加个个人更偏好于PCRE的方式,所以笔者就不做比较?jin),熟(zhn)的朋友可以发表下意见Q谢谢? 在用ie6览有框架的xhtml面的时候,默认?x)水q_垂直滚动条会(x)一起出玎ͼq是ie6的一个bugQ在firefox上是正常的,出现的原因是其对XHTML 1.0 transitional doctype的解释缺?对于q个bug一般有3U解x(chng)案, |页可见区域宽:(x)document.body.clientWidth HTML_定位:scrollLeft,scrollWidth,clientWidth,offsetWidth IE6.0、FF1.06+Q?/p>
clientWidth = width + padding clientHeight = height + padding offsetWidth = width + padding + border offsetHeight = height + padding + border IE5.0/5.5Q?br />
clientWidth = width - border clientHeight = height - border offsetWidth = width offsetHeight = height (需要提一下:(x)CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无? |页可见区域宽:(x) document.body.clientWidth Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/p>
技术要?br />
本节代码主要使用?jin)Document对象关于H口的一些属性,q些属性的主要功能和用法如下?/p>
要得到窗口的寸Q对于不同的览器,需要用不同的属性和Ҏ(gu)Q若要检窗口的真实寸Q在Netscape下需要用Window的属性;?
IE下需要深入Document内部对bodyq行(g);在DOM环境下,若要得到H口的尺寸,需要注意根元素的尺寸,而不是元素?/p>
Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度?/p>
Document对象的body属性对应HTML文的标{。Document对象的documentElement属性则表示HTML文的根节点?/p>
document.body.clientHeight表示HTML文所在窗口的当前高度。document.body. clientWidth表示HTML文所在窗口的当前宽度?/p>
实现代码 源程序解?/p>
Q?Q程序首先徏立一个表单,包含两个文本框,用于昄H口当前的宽度和高度Qƈ且,其数g(x)随窗口大的改变而变化?/p>
Q?Q在随后的JavaScript代码中,首先定义?jin)两个变量winWidth和winHeightQ用于保存窗口的高度值和宽度倹{?/p>
Q?Q然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到H口的高度和宽度Qƈ二者保存在前述两个变量中?/p>
Q?Q再通过深入Document内部对bodyq行(g),获取H口大小Qƈ存储在前qC个变量中?/p>
Q?Q在函数的最后,通过按名U访问表单元素,l果输出至两个文本框?/p>
Q?Q在JavaScript代码的最后,通过调用findDimensions ( )函数Q完成整个操作?br />
1、修改域名访问方式:(x) q行QC:\WINDOWS\system32\drivers\etc 打开Qhosts文g d域名指向?/p>
2、修改httpd.conf. 配置生效前提Q必M改跟目录为:(x) <Directory /> 否则?x)出现无权访问问题?/p>
3、虚拟主机的配置 (2) ZIP和多端口的虚拟主机配|?br />
Listen 172.20.30.40:80 <VirtualHost 172.20.30.40:80> <VirtualHost 172.20.30.40:8080> <VirtualHost 172.20.30.50:80> <VirtualHost 172.20.30.50:8080> (3)单个IP地址的服务器上基于域名的虚拟L配置Q?br />
# Ensure that Apache listens on port 80 # Listen for virtual host requests on all IP addresses <VirtualHost *:80> <VirtualHost *:80> (4)在多个IP地址的服务器上配|基于域名的虚拟LQ?br />
Listen 80 # This is the "main" server running on 172.20.30.40 # This is the other address <VirtualHost 172.20.30.50> <VirtualHost 172.20.30.50> (5)在不同的端口上运行不同的站点(Z多端口的服务器上配置Z域名的虚拟主?Q?br />
Listen 80 NameVirtualHost 172.20.30.40:80 <VirtualHost 172.20.30.40:80> <VirtualHost 172.20.30.40:8080> <VirtualHost 172.20.30.40:80> <VirtualHost 172.20.30.40:8080> (6)Z域名和基于IP的合虚拟主机的配置: NameVirtualHost 172.20.30.40 <VirtualHost 172.20.30.40> <VirtualHost 172.20.30.40> <VirtualHost 172.20.30.40> ========================================================================== 单的?打开httpd.conf 在最后加入如下内? <VirtualHost 127.0.0.2:80> "d:/AppServ/www2" Z的站点存攄?重启apache2以后Q你的虚拟主机就配置好了(jin)Q以后就可以通过127.0.0.2,?27.0.0.3q入不同的站点了(jin)?/p>
下面l说明分? 在我们安装APACHE的时候一般默认的apache的配|是只有一个网站,q样切换h很不方便。其实这个问题很好解冻I是把本机的 apache配置成ؓ(f)虚拟服务器。但是,|上大多数教E的是教?apache如何配置Z域名的虚拟主机的Q而在本机调试|站的时候,一般都是用本地ipQ?27.0.0.1 ?localhostQ直接访问,没有用到域名。所以得把apache配置成ؓ(f)Zip地址的虚拟主机?/p>
首先Q我们都知道,所有以127打头的ip地址都应该指向本机,q不只有127.0.0.1Q这点大家可以试试?br />
q样一来,也就是说本机有够多的ip地址供你来开设虚拟主Z(jin)?/p>
废话说Q进入正式的配置工作Q下面是apache的httpd.conf里相关配|部? httpd.conf 位于 Apache2.2\conf )Q?br />
1、Listen部分Q必ȝ接指定端口,不指定ip地址Q配|应写ؓ(f)Q?br />
Listen 80 3、虚拟主机配|段Q在httpd.conf 最后加?br />
<VirtualHost 127.0.0.2:80> <VirtualHost 127.0.0.3:80> 4、然后相应的配置好各个目录属性,下面是一个目录属性的典型配置Q?br />
<Directory "d:/AppServ/www2"> <Directory "d:/AppServ/www3"> 重启apache2以后Q你的虚拟主机就配置好了(jin)Q以后就可以通过127.0.0.1?27.0.0.2,127.0.0.3q入不同的站点了(jin)?/p>
Windows?strong>PHP环境安装Q第一步:(x)Apache安装
Windows?strong>PHP环境安装Q第二步QPHP安装
Windows?strong>PHP环境安装Q第三步QMysql安装
Windows?strong>PHP环境安装Q第一步:(x)Apache安装
本次安装目录为D:"PHPServer"
1. apache_2.2.3-win32-x86-no_ssl.msi
Apache服务器YӞ我下载的是win版本Q?.0pd的配|都是相似的?/p>
Windows?strong>PHP环境安装Q第一步:(x)PHP安装
Windows?strong>PHP环境安装Q第三步QMysql安装
1、安装mysql出现write configuration file通不q,比如Q后面的提示?
configuration file template D:"PHPServer"Mysql5.0"my-
template.ini could not be processed and written to D:"PHPServer"Mysql5.0"my.ini.error code-1
可能原因Q安装\径带有中文?br />
解决办法Q换到另外全部是英文和数字的目录安装应该正怺(jin)?br />
2、不?#8220;Start service”
可能原因Q一般出现在以前有安装mysql的服务器上?br />
?军_法:(x)先保证以前安装的mysql服务器彻底卸载掉?jin);不行的话Q检查是否按上面一步所_(d)之前的密码是否有修改Q照上面的操作;如果依然不行Q将
mysql安装目录下的data文g夹备份,然后删除Q在安装完成后,安装生成的data文g夹删除,备䆾的data文g夹移回来Q再重启mysql?
务就可以?jin),q种情况下,可能需要将数据库检查一下,然后修复一ơ,防止数据出错?/p>
1、修改c:"windows下的php.ini文g, ?extension_dir = "./"修改为extension_dir =
"d:"PHPServer"php5"ext", register_globals = Off改ؓ(f)On;
?extension=php_mysql.dll前面的引?;"L?br />
2、复制php目录下的libmysql.dll文g到system32?br />
试MySQL,在Web根目录下建立testdb.php文g内容如下Q?br />
<?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
phpMyadmin解压到apache的网늛?Z(jin)方便后序操作文件夹重命名ؓ(f)pma.
在libraries"config.default.php?br />
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'your password'; // MySQL password (only needed
加入用户名和密码
注意事项
装了(jin)mysql后外部不能连?br />
打开XP防火墙的3306端口,允许外部讉K.当然如果你装?jin)其他的防火墙也要打开此端?
mysqlfront 不能q接的问??251错误
在本机用其他工具和命令行都可以连, 在另外一台l(f)inux上也可以q?加密方式改Z(jin)old_password也不?但是今天来开机发现可以连?或许是要重启以下?呵呵.
q入phpMyAdmin? 出现 “无法载入 mysql 扩展Q请(g)?PHP 配置”。这里或许是昄的ؕ?你要在IE的编码中选择体中文就?x)看?
解决办法是上面说的要让php支持mysql,讄扩展文g的的路径,打开扩展?
解决:在php.ini中将此扩展打开,?extension=php_mbstring.dll前面的引号去掉即?/p>
]]>
PHP正则表达式,作ؓ(f)一U快速、便L(fng)处理字符串的工具Q在各种~程语言中都有着q泛的用途,通过在PHP中的一些用,下面记录一下关于PHP正则表达式的一些相x(chng)巧?
]]>
把这D代码放到头部或者尾?nbsp; 清除~存 点击卛_切换
按照文g目录地址 扑ֈ Std_StranJF.Js q个文g (q个文g是官斚w认提供的 但是官方没有说明) 可以修改默认昄的语a
]]>参数说明Q?br />
1、overflow-y : 讄当对象的内容过其指定高度时如何理内容Qoverflow-x : 讄当对象的内容过其指定宽度时如何理内容?br />
参数:
visibleQ扩大面U以昄所有内?br />
autoQ仅当内容超出限定值时d滚动?br />
hiddenQL隐藏滚动?br />
scrollQL昄滚动?br />
2、height : 讄滚动条的高度Q修改其后数值即可)(j)?br />
3、滚动条颜色参数讄Q?br />
scrollbar-3d-light-color 讄或检索滚动条亮边框颜?br />
scrollbar-highlight-color 讄或检索滚动条3D界面的亮边(ThreedHighlightQ颜?br />
scrollbar-face-color 讄或检索滚动条3D表面QThreedFaceQ的颜色
scrollbar-arrow-color 讄或检索滚动条方向头的颜?br />
scrollbar-shadow-color 讄或检索滚动条3D界面的暗边(ThreedShadowQ颜?br />
scrollbar-dark-shadow-color 讄或检索滚动条暗边框(ThreedDarkShadowQ颜?br />
scrollbar-base-color 讄或检索滚动条基准颜色
xhtml中隐藏滚动条
Ҏ(gu)1:
代码Q?br />
html { overflow-y: scroll; }
原理Q强制显Cie的垂直滚动条Q而忽略水qx(chng)动条
优点Q完全解决了(jin)q个问题, 允许你保持完整的XHTML doctype.
~点Q即佉K面不需要垂直滚动条的时候也?x)出现垂直滚动条?br />
Ҏ(gu)2:
代码Q?br />
html { overflow-x: hidden; overflow-y: auto; }
原理Q隐藏横向滚动,垂直滚动Ҏ(gu)内容自适应
优点Q在视觉上解决了(jin)q个问题.在不必要的时? 未强制垂直滚动条出现.
~点Q只是隐藏了(jin)水^滚动条,如果面真正需要水qx(chng)动条的时候,
屏幕以外的内容会(x)因ؓ(f)用户无法水^滚动Q而看不到?br />
Ҏ(gu)3:
代码Q?br />
body { margin-right: -15px; margin-bottom: -15px; }
原理Q这?x)在margin的水q_垂直方向上添加一个负? IEd?jin)该_数值后, 便会(x)去除Ҏ(gu)动条的需求假?
优点Q在视觉上解决了(jin)q个问题.Q垂直滚动根据内容自适应
~点Q由?Zؓ(f)创徏"?5px的外边距(margin), 所以无法用该填充q的屏幕区域.讄滚动条样?/strong>
在原来的html的时候,我们可以q样定义整个面的滚动条
body{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
scrollbar-highlight-color:#fff; /*- 左二 -*/
scrollbar-face-color:#E4E4E4; /*- 面子 -*/
scrollbar-arrow-color:#666; /*- 头 -*/
scrollbar-shadow-color:#808080; /*- 右二 -*/
scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
scrollbar-base-color:#D7DCE0; /*- -*/
scrollbar-track-color:#;/*- 滑道 -*/
}
但是同样的代码,我们应用?xhtml下就不v作用?jin),我相信好多好朋友也遇到过同样的问?br />
那么怎么才能在xhtml下应用滚动条样式呢?看下列代?br />
html{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
scrollbar-highlight-color:#fff; /*- 左二 -*/
scrollbar-face-color:#E4E4E4; /*- 面子 -*/
scrollbar-arrow-color:#666; /*- 头 -*/
scrollbar-shadow-color:#808080; /*- 右二 -*/
scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
scrollbar-base-color:#D7DCE0; /*- -*/
scrollbar-track-color:#;/*- 滑道 -*/
}
q段代码和上一D唯一的不同就是在css定义的元素上Q一个是body一个是html。我们再试一下,把html面?body"修改?html"试一下,发现依然可以实现效果。那到底是ؓ(f)什么呢Q?br />
从字面上来看Qxhtml比html多一个x,那么q个x其实也就是xml,Z么要加一个xml在里面?其实最Ҏ(gu)的原因就是要让html更加l构化标
准化Q因为html实在是太烂)(j)。我们在html里面定义的是bodyQ因为html不是很标准所以这样可以生效,而在xhtml里面q样׃行了(jin)Q我?
看那个图很明显,body标签本n不是根元素,只有html才是根元素,而页面的滚动条也是属于根元素的,所以这是我们Z么定义body没有效果的原
因,因ؓ(f)我们定义的只是一个子原素。okQ我们知道了(jin)原理Q来做一个试验如果把定义"body"?xhtml"换成"*"Q?br />
*{
scrollbar-3dlight-color:#D4D0C8;
scrollbar-highlight-color:#fff;
scrollbar-face-color:#E4E4E4;
scrollbar-arrow-color:#666;
scrollbar-shadow-color:#808080;
scrollbar-darkshadow-color:#D7DCE0;
scrollbar-base-color:#D7DCE0;
scrollbar-track-color:#;
}
在html和xhtml都通过Q因?是定义面上的M标签当然也包括了(jin)“html”q个标签?br />
(ps:其实与其说是html与xhtml的区别到不如说是有无XHTML 1.0 transitional
doctype的区别,但是如果你把面的XHTML 1.0 transitional
doctypeL的话Q那么这个页面就没有doctypeQ默认的昄方式是html4.01,不过你要把XHTML 1.0
transitional doctype修改成HTML 4.01
doctype同样面定义body也不?x)有效果的,虽然q个面的标准是html 4.01)
文章出处Q?a >养鸡讑֤
养鸡热风?/a>
]]>
|页可见区域高:(x)document.body.clientHeight
|页可见区域宽:(x)document.body.offsetWidth (包括边线的宽)
|页可见区域高:(x)document.body.offsetHeight (包括边线的宽)
|页正文全文宽:(x)document.body.scrollWidth
|页正文全文高:(x)document.body.scrollHeight
|页被卷ȝ高:(x)document.body.scrollTop
|页被卷ȝ左:(x)document.body.scrollLeft
|页正文部分上:(x)window.screenTop
|页正文部分左:(x)window.screenLeft
屏幕分L率的高:(x)window.screen.height
屏幕分L率的宽:(x)window.screen.width
屏幕可用工作区高度:(x)window.screen.availHeight
屏幕可用工作区宽度:(x)window.screen.availWidth
scrollHeight: 获取对象的滚动高度?br />
scrollLeft:讄或获取位于对象左边界和窗口中目前可见内容的最左端之间的距?br />
scrollTop:讄或获取位于对象最端和窗口中可见内容的最端之间的距?br />
scrollWidth:获取对象的滚动宽?br />
offsetHeight:获取对象相对于版面或q坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或?offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或?offsetTop 属性指定的父坐标的计算端位置
event.clientX 相对文档的水q_?br />
event.clientY 相对文的垂直?br />
event.offsetX 相对容器的水q_?br />
event.offsetY 相对容器的垂直坐?br />
document.documentElement.scrollTop 垂直方向滚动的?br />
event.clientX+document.documentElement.scrollTop 相对文的水q_?垂直方向滚动的量
IEQFireFox 差异如下Q?/p>
|页可见区域高:(x) document.body.clientHeight
|页可见区域宽:(x) document.body.offsetWidth (包括边线的宽)
|页可见区域高:(x) document.body.offsetHeight (包括边线的高)
|页正文全文宽:(x) document.body.scrollWidth
|页正文全文高:(x) document.body.scrollHeight
|页被卷ȝ高:(x) document.body.scrollTop
|页被卷ȝ左:(x) document.body.scrollLeft
|页正文部分上:(x) window.screenTop
|页正文部分左:(x) window.screenLeft
屏幕分L率的高:(x) window.screen.height
屏幕分L率的宽:(x) window.screen.width
屏幕可用工作区高度:(x) window.screen.availHeight
屏幕可用工作区宽度:(x) window.screen.availWidth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>误整浏览器H口</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</meta></head>
<body>
<h2 align="center">误整浏览器H口大小</h2><hr />
<form action="#" method="get" name="form1" id="form1">
<!--昄览器窗口的实际寸-->
览器窗??实际高度: <input type="text" name="availHeight" size="4"/><br />
览器窗??实际宽度: <input type="text" name="availWidth" size="4"/><br />
</form>
<script type="text/javascript">
<!--
var winWidth = 0;
var winHeight = 0;
function findDimensions() //函数Q获取尺?
{
//获取H口宽度
if (window.innerWidth)
winWidth = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
winWidth = document.body.clientWidth;
//获取H口高度
if (window.innerHeight)
winHeight = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight = document.body.clientHeight;
//通过深入Document内部对bodyq行(g),获取H口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)
{
winHeight = document.documentElement.clientHeight;
winWidth = document.documentElement.clientWidth;
}
//l果输出至两个文本框
document.form1.availHeight.value= winHeight;
document.form1.availWidth.value= winWidth;
}
findDimensions();
//调用函数Q获取数?
window.onresize=findDimensions;
//-->
</script>
</body>
</html>
]]>
http://www.tkk7.com/Files/DreamFight/msiepng.rar
]]>
W一步:(x)在连接样式表的元素里定义一个id,例如
<link href="1.css" rel="stylesheet" type="text/css" id="css">
我定义的id是css?
W二步:(x)写一个js函数Q代码如下:(x)
<script type="text/javascript">
function change(a){
var css=document.getElementById("css");
if (a==1)
css.setAttribute("href","1.css");
if (a==2)
css.setAttribute("href","2.css");
}
</script>
q个函数的code可以攑֜面的Q何地斏V?
W三步:(x)为改变页面的样式表的q接d一个函数的触发事gQ代码如下:(x)
<a href="#" onClick="change(1)">1.css</a>
<a href="#" onClick="change(2)">2.css</a>
该效果在IE和FF下均试通过Q相信大家看完后因该非常明了(jin)Q利用这个方法我们可以让览者自己选择需要显C的样式表,比如q老者可以选择一个字体较大的样式表。这里需要注意的两点是:(x)
在这个例子中函数名function后面的名字不能ؓ(f)links或者linkQ如果ؓ(f)links或者linkQ样式表不被改变,具体什么原因我也不大清楚,可能是javascript的保留字W?
另外如果是改变整个页面的样式Q你需要在样式表文仉定义body的高度ؓ(f)100%
q有一U方法:(x)
<script language="javascript">
var b_v = navigator.appVersion;
var IE6 = b_v.search(/MSIE 6/i) != -1;
var IE7 = b_v.search(/MSIE 7/i) != -1;
if (IE6) {
document.write("<link href=""css/neiye_ie6.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" />");
}else{
document.write("<link href=""css/neiye.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" />");
}
</script>
自动化养鸡设?/a>
]]>
]]>
Options FollowSymLinks
AllowOverride None
### Order deny,allow
### Deny from all
Order allow,deny
Allow from all
Satisfy all
</Directory>
(1)ZIP地址的虚拟主机配|?br />
Listen 80
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
DocumentRoot /www/example1-80
ServerName www.example1.com
</VirtualHost>
DocumentRoot /www/example1-8080
ServerName www.example1.com
</VirtualHost>
DocumentRoot /www/example2-80
ServerName www.example1.org
</VirtualHost>
DocumentRoot /www/example2-8080
ServerName www.example2.org
</VirtualHost>
Listen 80
NameVirtualHost *:80
DocumentRoot /www/example1
ServerName www.example1.com
ServerAlias example1.com. *.example1.com
# Other directives here
</VirtualHost>
DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here
</VirtualHost>
ServerName server.domain.com
DocumentRoot /www/mainserver
NameVirtualHost 172.20.30.50
DocumentRoot /www/example1
ServerName www.example1.com
# Other directives here …
</VirtualHost>
IXDBA.NETC论坛
DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here …
</VirtualHost>
Listen 8080
NameVirtualHost 172.20.30.40:8080
ServerName www.example1.com
DocumentRoot /www/domain-80
</VirtualHost>
ServerName www.example1.com
DocumentRoot /www/domain-8080
</VirtualHost>
ServerName www.example2.org
DocumentRoot /www/otherdomain-80
</VirtualHost>
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>
Listen 80
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>
DocumentRoot d:/AppServ/www2
ServerName 127.0.0.2:80
</VirtualHost>
<Directory "d:/AppServ/www2">
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
2、不用像Z域名的虚拟主机那样写“NameVirtualHost”?/p>
DocumentRoot d:/AppServ/www2
ServerName 127.0.0.2:80
</VirtualHost>
DocumentRoot d:/AppServ/www3
ServerName 127.0.0.3:80
</VirtualHost>...
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
]]>
<VirtualHost *:80>
ServerAdmin
webmaster@example.com ——管理员邮箱Q可以随便写一个)(j)
DocumentRoot "/home/phpok-com"
——网站目?br />
ServerName example.com —?
要绑定的域名
ServerAlias www.example.com
——要l定的别名,如果有多个别名就用英文逗号隔开
CustomLog
logs/example.com_custom_log——用h志格式(q一行也可以为空Q?br />
ErrorLog logs/example.com_error_log
——错误日志(也可以ؓ(f)I)(j)
</VirtualHost>
步骤Q?br />
1.修改httpd.conf
?span style="color: #ff0000;">#Include conf/extra/httpd-vhosts.conf前面?LQ意思是让httpd.conf文g包含httpd-vhosts.confq个配置文gQ这是apache的配|模块化的一个表玎ͼq里不多说?br />
?
找httpd.conf中的ServerNameQ如果ServerName的设|不是域?
www.abc1.com的话Q那么改为ServerName www.abc1.comQ如q你要用ssl之类的东西,那么改ؓ(f)ServerName
www.abc1.com:80Q就是加?jin)个端口?br />
2.修改httpd-vhosts.conf
d如下代码Q有些可能文仉面就有,改一下就可以?jin)?j)Q?br />
NameVirtualHost *
<VirtualHost *>
DocumentRoot "C:/aic"
ServerName www.abc1.com
ServerAlias abc1.com *.abc1.com
</VirtualHost>
<VirtualHost *>
DocumentRoot "c:/aic/mybbonline"
ServerName www.efg2.com
ServerAlias efg2.com *.efg2.com
</VirtualHost>
值得注意的是QVirtualHost是有序的,排在最前的VirtualHost的我们默认的|站域名Q其中的DocumentRoot和ServerName都必Mhttpd.conf中的一P包括端口?br />
DocumentRoot是虚拟主机的路径
而ServerAlias是域名的别名Q配|了(jin)q个Q那么一些二U域名就都可以进行虚拟主析了(jin)。如*.efg2.com可以代表bbs.efg2.com或news.efg2.com{?br />
-----------------------------------------------------------------
虚拟L的一般Ş式诸如(extra/httpd-vhosts.confQ:(x)
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
q是apache2.2中文参考手册中的示例。一般的׃q样配置在以前版本是没有问题的。但是现在就不一样了(jin)。当讉K某个虚拟L下的面的时候会(x)出现
cMQ?#8220;403(止讉K)Q你无法查看该网?#8230;”的错误。很明显q是拒绝讉K的提C。按照经验很Ҏ(gu)扑ֈ(httpd.conf)下面的内容:(x)
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
//先拒l后允许Deny from all
//拒绝所有的讉K</Directory>
q一个部分就是对目录q行讉K控制的,很显然这讄得很严格Q因此,我们必须手动加入虚拟机目录的权限控制块,才可以让用户正常讉K虚拟机的目录?qing)页面?
件。有两个地方可以加入虚拟目录讉K权限控制块:(x)主配|文件httpd.conf和虚拟机配置文ghttpd-vhost.conf,毫无疑问我们选择?
拟机配置文gQ主要是l护h更方ѝ那么我们把目录讉K控制块插入到虚拟机配|文Ӟq样我们的虚拟主机的配置文g写法qDP(x)
<VirtualHost *:80>
DocumentRoot "E:/web"
ServerName www.domain.tld
<Directory "E:/web">
//插入开?br />
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
//插入l束</VirtualHost>
q?
样配|完成后Q我们用apachectl命o(h)?qing)相兛_数来(g)配|文件是否有问题。确认无误后q行Q重新启动apache服务。然后用浏览器q行讉K
试Q呵呵!又是废话?jin)!Q。如果还?sh)行的话Q那检查你的页面文件的权限讄是否q高Q导致的不能讉K?jin)!当然q种情况在windows下比较少见,一
般可能出现在linux环境下?