2009年3月31日星期二

通过js实现DIV随机排列

最新帮深圳北大青鸟的网站做一个随机实现公司网址排名的JS脚本,原来用的是sort方法,但这种方法实现起来最终会导致最后的DIV出现在第一个的频率达50%,无法公平、公正。以下我写的代码实现了公平、公正原则,呵呵,秀一下。

<HTML><HEAD><TITLE>深圳北大青鸟/北大青鸟/电脑学校/IT培训/培训/计算机学校</TITLE>
<META http-equiv=Content-Type content=\\\"text/html; charset=gb2312\\\">
<META content=深圳北大青鸟是北大青鸟电脑学校专业做IT培训的计算机学校 name=description>
<META content=深圳北大青鸟,北大青鸟,电脑学校,IT培训,培训,计算机学校 name=keywords>
<STYLE type=text/css>
.body {
FONT-SIZE: 12px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif,宋体
}
TABLE {
FONT-SIZE: 12px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif,宋体
}
TD {
FONT-SIZE: 12px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif,宋体
}
A {
COLOR: #000; TEXT-DECORATION: none
}
A:hover {
COLOR: #000; BOTTOM: 1px; POSITION: relative; TEXT-DECORATION: none; outline: none
}
A:unknown {
outline: none
}
A:visited {
outline: none
}
.STYLE1 {
FONT-WEIGHT: bold; COLOR: #ff0000
}
#main {
WIDTH: 680px
}
#main DIV {
MARGIN-TOP: 0px; FLOAT: left; MARGIN-LEFT: 0px; WIDTH: 680px
}
DIV TABLE {
WIDTH: 100%
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
</STYLE>

<SCRIPT type=text/javascript charset=GB2312>

function arrRand(obj){
var a = new Array();
var x = new Array();
for(var i = 0;i < obj;i++){
a[i] = i + 1;
}
for(var i=0; i<obj;i++){
x[i] = a.splice (Math.floor (Math.random () * a.length) , 1);
}
return x;
}

function randTable(){
var c = arrRand(len);
for(var k = 0;k < len;k ++){
divs[c[k] - 1].innerHTML = b[k];
}
}

var b = new Array();
var divs = new Object;
var len;

window.onload = function(){
divs = document.getElementById(\\\"main\\\").getElementsByTagName(\\\"div\\\");
len = divs.length;
for(var j = 0;j < len;j++){
b[j] = divs[j].innerHTML;
}
randTable();
}
</SCRIPT>

<META content=\\\"MSHTML 6.00.2900.3492\\\" name=GENERATOR></HEAD>
<BODY bgColor=transparent>
<DIV id=main>

<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=罗湖(软件)校区 href=\\\"http://www.0755accp.com/\\\"
target=_blank><SPAN
class=STYLE1>罗湖(软件)校区:</SPAN>深圳市罗湖区宝安北路桃园商业大厦7楼南区(罗湖人才市场旁)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=地王书城(软件)校区 href=\\\"http://www.benet-wh.com.cn/\\\"
target=_blank><SPAN
class=STYLE1>地王书城(软件)校区:</SPAN>深圳市罗湖区宝安南路嘉宾花园四楼(地王大厦斜对面,深圳书城旁)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=福田华强北(软件)校区 href=\\\"http://www.sz-aptech.com/\\\" target=_blank><SPAN
class=STYLE1>福田华强北(软件)校区:</SPAN>深圳市深南中路爱华大厦14楼(华强北兴华宾馆西侧)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=福田(网络)校区 href=\\\"http://www.sz-aptech.com/\\\"
target=_blank><SPAN
class=STYLE1>福田(网络)校区:</SPAN>深圳市深南中路爱华电脑大厦5楼(华强北兴华宾馆西侧)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=宝安(软件)校区 href=\\\"http://www.szaptech.com.cn\\\"
target=_blank><SPAN
class=STYLE1>宝安(软件)校区:</SPAN>深圳市宝安区25区商业步行街华丰时代广场5楼(海雅百货旁)</A></TD>
</TR>
</TBODY>
</TABLE>
</DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=南山科技园(网络)校区 href=\\\"http://www.sz-benet.net\\\"
target=_blank><SPAN
class=STYLE1>南山科技园(网络)校区:</SPAN>深圳市南山区科技园深南花园C座三楼</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=南头(网络)校区 href=\\\"http://www.szaptech.com.cn/\\\"
target=_blank><SPAN
class=STYLE1>南头(网络)校区:</SPAN>深圳市南山区南头南新天桥钰龙园D座3楼(国美电器旁)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=福田(测试)校区 href=\\\"http://www.sz-aptech.com\\\"
target=_blank><SPAN
class=STYLE1>福田(测试)校区:</SPAN>深圳市福田区深南中路核电大厦三楼(深圳华强北兴华宾馆对面)</A></TD>
</TR></TBODY></TABLE></DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=南山(测试)校区 href=\\\"http://www.sz-test.com\\\"
target=_blank><SPAN
class=STYLE1>南山(测试)校区:</SPAN>深圳市南山区科技园南区创维大厦A座17楼</A></TD>
</TR>
</TBODY>
</TABLE>
</DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=\\\"100%\\\" border=0>
<TBODY>
<TR>
<TD height=28><A title=南山深圳大学(软件)校区 href=\\\"http://www.sz-accp.net/\\\"
target=_blank><SPAN
class=STYLE1>南山深圳大学(软件)校区:</SPAN>深圳市南山区学府路西部电子时代广场四楼(深圳大学旁)</A></TD>
</TR></TBODY></TABLE></DIV>
</DIV>
</BODY>
</HTML>

2009年3月26日星期四

PHP+Apache在Windows上的安装配置

该方法目前主要针对php5.2.6 + apache2.2.9,不过我想,更高的版本也应该适用,其中apache使用的Window安装版本,php使用的是zip版本。


具体如下:
1、Apatech安装(由于是自动安装版,就不多说了,一直下一步,过程中适当配置一下就OK)

2、PHP安装 -> 解压 -> 更改extension_dir = “./”为extension_dir = “D:/PHP/PHP/ext” -> 设置环境变量(PHP目录与PHP ext目录[;D:\phpserver\php;D:\phpserver\php\ext]) -> 开启想要的扩展

设置检索目录 DirectoryIndex index.php index.html

#************************************
# apatech2.2.9
#************************************
PHPIniDir "e:/phpserver/php"   //实际路径需要自己修改
LoadModule php5_module "e:/phpserver/php/php5apache2_2.dll"  //实际路径需要自己修改
addType application/x-httpd-php .php

php.ini配置内容(增加Xdebug功能):
************************************************************
[Xdebug]
extension=php_xdebug-2.0.3-5.2.5.dll
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir=E:\phpdebug //日志输出文件夹
xdebug.profiler_enable=on
xdebug.profiler_output_dir=E:\phpdebug //日志输出文件夹

*************************************************************

Apache显示目录httpd.conf配置方法:
#去掉Indexes则不显示目录
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all

其它说明:
1、关于“You don't have permission to access / on this server.”的错误处理:
配置文件:
Options FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
Satisfy all
然后试着把deny from all中的deny改成了allow,保存后重起了apache,然后再一测试我的网页,哈哈!居然问题就出在这,访问测试网站完全正常了。

2、要用rewrite去掉index.php,需要把 AllowOverride None 改成 AllowOverride all。
同时启用rewrite模块,并写.htaccess这个文件:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|styles|javascripts|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

注意第二行的images|sytles|javascripts|,要加上它进行过滤才能正确获得相关目录的链接
去掉Kohana配置文件中的:$config['index_page'] = 'index.php'; 为 $config['index_page'] = '';



PDO参数说明

因为自己PHPCORE的核心框架是用PDO进行数据库驱动的,所以,对于它的一些基本配置参数必须有一定的了解,以下是收集到部分内容,供日后参考使用:


(备注:PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择。 )



PDO->beginTransaction() — 标明回滚起始点 
PDO->commit() — 标明回滚结束点,并执行SQL 
PDO->__construct() — 建立一个PDO链接数据库的实例 
PDO->errorCode() — 获取错误码 
PDO->errorInfo() — 获取错误的信息 
PDO->exec() — 处理一条SQL语句,并返回所影响的条目数 
PDO->getAttribute() — 获取一个“数据库连接对象”的属性 
PDO->getAvailableDrivers() — 获取有效的PDO驱动器名称 
PDO->lastInsertId() — 获取写入的最后一条数据的主键值 
PDO->prepare() — 生成一个“查询对象” 
PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement” 
PDO->quote() — 为某个SQL中的字符串添加引号 
PDO->rollBack() — 执行回滚 
PDO->setAttribute() — 为一个“数据库连接对象”设定属性 
PDOStatement->bindColumn() — Bind a column to a PHP variable 
PDOStatement->bindParam() — Binds a parameter to the specified variable name 
PDOStatement->bindValue() — Binds a value to a parameter 
PDOStatement->closeCursor() — Closes the cursor, enabling the statement to be executed again. 
PDOStatement->columnCount() — Returns the number of columns in the result set 
PDOStatement->errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle 
PDOStatement->errorInfo() — Fetch extended error information associated with the last operation on the statement handle 
PDOStatement->execute() — Executes a prepared statement 
PDOStatement->fetch() — Fetches the next row from a result set 
PDOStatement->fetchAll() — Returns an array containing all of the result set rows 
PDOStatement->fetchColumn() — Returns a single column from the next row of a result set 
PDOStatement->fetchObject() — Fetches the next row and returns it as an object. 
PDOStatement->getAttribute() — Retrieve a statement attribute 
PDOStatement->getColumnMeta() — Returns metadata for a column in a result set 
PDOStatement->nextRowset() — Advances to the next rowset in a multi-rowset statement handle 
PDOStatement->rowCount() — Returns the number of rows affected by the last SQL statement 
PDOStatement->setAttribute() — Set a statement attribute 
PDOStatement->setFetchMode() — Set the default fetch mode for this statement 

从函数列表可以看出,操作基于不同的对象,“PDO”表示的是一个数据库连接对象(new PDO产生),“PDOStatement”表示的是一个查询对象(PDO->query()产生)或者是一个结果集对象(PDO->prepare()产生)。 
一个“数据库连接对象”的例子,返回“PDO”: 
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
?> 

一个“查询对象”的例子,返回“PDOStatement”: 
$sql = "Insert INTO `test`.`table` (`name` ,`age`)VALUES (?, ?);"; 
$stmt = $dbh->prepare($sql); 
?> 

一个“结果集对象”的例子,返回“PDOStatement”: 
$sql = "Select * FROM `table` Where `name` = 'samon'"; 
$stmt = $dbh->query($sql); 
?> 

在test库里面生成table表,并写入一些数据: 
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
$dbh->query('set names utf8;'); 

$sql = " 
Drop TABLE IF EXISTS `table`; 
Create TABLE `test`.`table` ( 
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`name` VARCHAR( 255 ) NOT NULL , 
`age` VARCHAR( 255 ) NOT NULL 
) ENGINE = InnoDB DEFAULT CHARSET=utf8; 
Insert INTO `test`.`table` (`name` ,`age`)VALUES ('samon', '27'); 
Insert INTO `test`.`table` (`name` ,`age`)VALUES ('leo', '26'); 
Insert INTO `test`.`table` (`name` ,`age`)VALUES ('ben', '28'); 
"; 
$dbh->query($sql); 
?> 

PDO->exec()方法的作用是处理一条SQL语句,并返回所影响的条目数。 

PDO->query()方法的作用是处理一条SQL语句,并返回一个“PDOStatement”。 

PDO->prepare()方法的作用是生成一个“查询对象”。 

PDO->lastInsertId()方法的作用是获取写入的最后一条数据的主键值。 
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
$dbh->query('set names utf8;'); 

$sql = "Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"; 
$dbh->query($sql); 
$lid = $dbh->lastInsertId($sql); 
print_r($lid); // 显示主键的值 
?> 

PDO->quote()方法的作用是为某个SQL中的字符串添加引号。PDO->quote()方法有两个参数,第一个参数是字符串,第二个参数表示参数的类型。 

PDO->getAttribute()方法的作用是获取一个“数据库连接对象”的属性。PDO->setAttribute()方法的作用是为一个“数据库连接对象”设定属性。 
// 修改默认的错误显示级别 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
?> 

属性列表: 
PDO::PARAM_BOOL 
    表示一个布尔类型 
PDO::PARAM_NULL 
    表示一个SQL中的NULL类型 
PDO::PARAM_INT 
    表示一个SQL中的INTEGER类型 
PDO::PARAM_STR 
    表示一个SQL中的SQL CHAR,VARCHAR类型 
PDO::PARAM_LOB 
    表示一个SQL中的large object类型 
PDO::PARAM_STMT 
    表示一个SQL中的recordset类型,还没有被支持 
PDO::PARAM_INPUT_OUTPUT 
    Specifies that the parameter is an INOUT parameter for a stored procedure. You must bitwise-OR this value with an explicit PDO::PARAM_* data type. 
PDO::FETCH_LAZY 
    将每一行结果作为一个对象返回 
PDO::FETCH_ASSOC 
    仅仅返回以键值作为下标的查询的结果集,名称相同的数据只返回一个 
PDO::FETCH_NAMED 
    仅仅返回以键值作为下标的查询的结果集,名称相同的数据以数组形式返回 
PDO::FETCH_NUM 
    仅仅返回以数字作为下标的查询的结果集 
PDO::FETCH_BOTH 
    同时返回以键值和数字作为下标的查询的结果集 
PDO::FETCH_OBJ 
    以对象的形式返回结果集 
PDO::FETCH_BOUND 
    将PDOStatement::bindParam()和PDOStatement::bindColumn()所绑定的值作为变量名赋值后返回 
PDO::FETCH_COLUMN 
    表示仅仅返回结果集中的某一列 
PDO::FETCH_CLASS 
    表示以类的形式返回结果集 
PDO::FETCH_INTO 
    表示将数据合并入一个存在的类中进行返回 
PDO::FETCH_FUNC 
PDO::FETCH_GROUP 
PDO::FETCH_UNIQUE 
PDO::FETCH_KEY_PAIR 
    以首个键值下表,后面数字下表的形式返回结果集 
PDO::FETCH_CLASSTYPE 
PDO::FETCH_SERIALIZE 
    表示将数据合并入一个存在的类中并序列化返回 
PDO::FETCH_PROPS_LATE 
    Available since PHP 5.2.0 
PDO::ATTR_AUTOCOMMIT 
    在设置成true的时候,PDO会自动尝试停止接受委托,开始执行 
PDO::ATTR_PREFETCH 
    设置应用程序提前获取的数据大小,并非所有的数据库哦度支持 
PDO::ATTR_TIMEOUT 
    设置连接数据库超时的值 
PDO::ATTR_ERRMODE 
    设置Error处理的模式 
PDO::ATTR_SERVER_VERSION 
    只读属性,表示PDO连接的服务器端数据库版本 
PDO::ATTR_CLIENT_VERSION 
    只读属性,表示PDO连接的客户端PDO驱动版本 
PDO::ATTR_SERVER_INFO 
    只读属性,表示PDO连接的服务器的meta信息 
PDO::ATTR_CONNECTION_STATUS 
PDO::ATTR_CASE 
    通过PDO::CASE_*中的内容对列的形式进行操作 
PDO::ATTR_CURSOR_NAME 
    获取或者设定指针的名称 
PDO::ATTR_CURSOR 
    设置指针的类型,PDO现在支持PDO::CURSOR_FWDONLY和PDO::CURSOR_FWDONLY 
PDO::ATTR_DRIVER_NAME 
    返回使用的PDO驱动的名称 
PDO::ATTR_ORACLE_NULLS 
    将返回的空字符串转换为SQL的NULL 
PDO::ATTR_PERSISTENT 
    获取一个存在的连接 
PDO::ATTR_STATEMENT_CLASS 
PDO::ATTR_FETCH_CATALOG_NAMES 
    在返回的结果集中,使用自定义目录名称来代替字段名。 
PDO::ATTR_FETCH_TABLE_NAMES 
    在返回的结果集中,使用自定义表格名称来代替字段名。 
PDO::ATTR_STRINGIFY_FETCHES 
PDO::ATTR_MAX_COLUMN_LEN 
PDO::ATTR_DEFAULT_FETCH_MODE 
    Available since PHP 5.2.0 
PDO::ATTR_EMULATE_PREPARES 
    Available since PHP 5.1.3. 
PDO::ERRMODE_SILENT 
    发生错误时不汇报任何的错误信息,是默认值 
PDO::ERRMODE_WARNING 
    发生错误时发出一条php的E_WARNING的信息 
PDO::ERRMODE_EXCEPTION 
    发生错误时抛出一个PDOException 
PDO::CASE_NATURAL 
    回复列的默认显示格式 
PDO::CASE_LOWER 
    强制列的名字小写 
PDO::CASE_UPPER 
    强制列的名字大写 
PDO::NULL_NATURAL 
PDO::NULL_EMPTY_STRING 
PDO::NULL_TO_STRING 
PDO::FETCH_ORI_NEXT 
    获取结果集中的下一行数据,仅在有指针功能时有效 
PDO::FETCH_ORI_PRIOR 
    获取结果集中的上一行数据,仅在有指针功能时有效 
PDO::FETCH_ORI_FIRST 
    获取结果集中的第一行数据,仅在有指针功能时有效 
PDO::FETCH_ORI_LAST 
    获取结果集中的最后一行数据,仅在有指针功能时有效 
PDO::FETCH_ORI_ABS 
    获取结果集中的某一行数据,仅在有指针功能时有效 
PDO::FETCH_ORI_REL 
    获取结果集中当前行后某行的数据,仅在有指针功能时有效 
PDO::CURSOR_FWDONLY 
    建立一个只能向后的指针操作对象 
PDO::CURSOR_SCROLL 
    建立一个指针操作对象,传递PDO::FETCH_ORI_*中的内容来控制结果集 
PDO::ERR_NONE (string) 
    设定没有错误时候的错误信息 
PDO::PARAM_EVT_ALLOC 
    Allocation event 
PDO::PARAM_EVT_FREE 
    Deallocation event 
PDO::PARAM_EVT_EXEC_PRE 
    Event triggered prior to execution of a prepared statement. 
PDO::PARAM_EVT_EXEC_POST 
    Event triggered subsequent to execution of a prepared statement. 
PDO::PARAM_EVT_FETCH_PRE 
    Event triggered prior to fetching a result from a resultset. 
PDO::PARAM_EVT_FETCH_POST 
    Event triggered subsequent to fetching a result from a resultset. 
PDO::PARAM_EVT_NORMALIZE 
    Event triggered during bound parameter registration allowing the driver to normalize the parameter name. 

PDO->getAvailableDrivers()方法的作用是获取有效的PDO驱动器名称。 

PDO->errorInfo()方法的作用获取错误的信息,PDO->errorCode()方法的作用是获取错误码。 
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
$dbh->query('set names utf8;'); 
$sql = "Insert INTO `test`.`table` (`name` ,`ageeeeee`)VALUES ('mick', 22);"; 
$dbh->query($sql); 
print_r($dbh->errorInfo()); 
/** 
* Array 
* ( 
*     [0] => 42S22 
*     [1] => 1054 
*     [2] => Unknown column 'ageeeeee' in 'field list' 
* ) 
*/ 
?> 

PDO->__construct()方法的作用是建立一个PDO链接数据库的实例。 

PDO->beginTransaction(),PDO->commit(),PDO->rollBack()这三个方法是在支持回滚功能时一起使用的。PDO->beginTransaction()方法标明起始点,PDO->commit()方法标明回滚结束点,并执行SQL,PDO->rollBack()执行回滚。 
try { 
    $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
    $dbh->query('set names utf8;'); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $dbh->beginTransaction(); 
    $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"); 
    $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);"); 
    $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);"); 
    $dbh->commit(); 
     
} catch (Exception $e) { 
    $dbh->rollBack(); 
    echo "Failed: " . $e->getMessage(); 
?> 

2009年3月24日星期二

优化PHP代码的42条建议

在网上看到了《优化PHP代码的42条建议》,对于我的PHP代码优化很有帮助,现摘录下来,好好看看:


1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。

2.echo 比 print 快。

3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。

4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。

5.注销那些不用的变量尤其是大数组,以便释放内存。

6.尽量避免使用__get,__set,__autoload。

7.require_once()代价昂贵。

8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。

9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

10.函数代替正则表达式完成相同功能。

11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。

12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。

13.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

14.用@屏蔽错误消息的做法非常低效。

15.打开apache的mod_deflate模块。

16.数据库连接当使用完毕时应关掉。

17.$row[‘id’]的效率是$row[id]的7倍。

18.错误消息代价昂贵。

19.尽量不要在for循环中使用函数,比如for ($x=0; $x <>

20.在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。

21.递增一个全局变量要比递增一个局部变量慢2倍。

22.递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。

23.递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。

24.仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。

25.方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。

26.派生类中的方法运行起来要快于在基类中定义的同样的方法。

27.调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。

28.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。

29.输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

30.Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。

31.除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。

32.尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

33.当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在 zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。

(举例如下)
if (strlen($foo) < style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">(与下面的技巧做比较)
if (!isset($foo{5})) { echo “Foo is too short”$$ }

调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

34.当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。

35.并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。

36.并非要用类实现所有的数据结构,数组也很有用。

37.不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?

38.当你需要时,你总能把代码分解成方法。

39.尽量采用大量的PHP内置函数。

40.如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。

41.评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。

42.mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

2009年3月22日星期日

mysql的字符串函数

MYSQL对字符串的支持是非常强大的,很多功能直接写一段MYSQL语句就能实现,不用再写PH代码操作,以下列出一些相关函数及其用法,以备参考:


ASCII(str)
    返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。

    mysql> select ASCII('2');
            -> 50
    mysql> select ASCII(2);
            -> 50
    mysql> select ASCII('dx');
            -> 100

    也可参见ORD()函数。
ORD(str)
    如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。

    mysql> select ORD('2');
            -> 50
     

CONV(N,from_base,to_base)
    在不同的数字基之间变换数字。返回数字N的字符串数字,从from_base基变换为to_base基,如果任何参数是NULL,返回NULL。参数N解释为一个整数,但是可以指定为一个整数或一个字符串。最小基是2且最大的基是36。如果to_base是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。 CONV以64位点精度工作。

    mysql> select CONV("a",16,2);
            -> '1010'
    mysql> select CONV("6E",18,8);
            -> '172'
    mysql> select CONV(-17,10,-18);
            -> '-H'
    mysql> select CONV(10+"10"+'10'+0xa,10,10);
            -> '40'
     

BIN(N)
    返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。

    mysql> select BIN(12);
            -> '1100'

OCT(N)
    返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。

    mysql> select OCT(12);
            -> '14'
     

HEX(N)
    返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。

    mysql> select HEX(255);
            -> 'FF'
     

CHAR(N,...)
    CHAR()将参数解释为整数并且返回由这些整数的ASCII代码字符组成的一个字符串。NULL值被跳过。

    mysql> select CHAR(77,121,83,81,'76');
            -> 'MySQL'
    mysql> select CHAR(77,77.3,'77.3');
            -> 'MMM'
     

CONCAT(str1,str2,...)
    返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。

    mysql> select CONCAT('My', 'S', 'QL');
            -> 'MySQL'
    mysql> select CONCAT('My', NULL, 'QL');
            -> NULL
    mysql> select CONCAT(14.3);
            -> '14.3'

LENGTH(str)
      
OCTET_LENGTH(str)
      
CHAR_LENGTH(str)
      
CHARACTER_LENGTH(str)
    返回字符串str的长度。

    mysql> select LENGTH('text');
            -> 4
    mysql> select OCTET_LENGTH('text');
            -> 4

    注意,对于多字节字符,其CHAR_LENGTH()仅计算一次。
LOCATE(substr,str)
      
POSITION(substr IN str)
    返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.

    mysql> select LOCATE('bar', 'foobarbar');
            -> 4
    mysql> select LOCATE('xbar', 'foobar');
            -> 0

    该函数是多字节可靠的。  

LOCATE(substr,str,pos)
    返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。

    mysql> select LOCATE('bar', 'foobarbar',5);
            -> 7

    这函数是多字节可靠的。
INSTR(str,substr)
    返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。

    mysql> select INSTR('foobarbar', 'bar');
            -> 4
    mysql> select INSTR('xbar', 'foobar');
            -> 0

    这函数是多字节可靠的。
LPAD(str,len,padstr)
    返回字符串str,左面用字符串padstr填补直到str是len个字符长。

    mysql> select LPAD('hi',4,'??');
            -> '??hi'
     

RPAD(str,len,padstr)
    返回字符串str,右面用字符串padstr填补直到str是len个字符长。  

    mysql> select RPAD('hi',5,'?');
            -> 'hi???'

LEFT(str,len)
    返回字符串str的最左面len个字符。

    mysql> select LEFT('foobarbar', 5);
            -> 'fooba'

    该函数是多字节可靠的。
RIGHT(str,len)
    返回字符串str的最右面len个字符。

    mysql> select RIGHT('foobarbar', 4);
            -> 'rbar'

    该函数是多字节可靠的。
SUBSTRING(str,pos,len)
      
SUBSTRING(str FROM pos FOR len)
      
MID(str,pos,len)
    从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。

    mysql> select SUBSTRING('Quadratically',5,6);
            -> 'ratica'

    该函数是多字节可靠的。
SUBSTRING(str,pos)
      
SUBSTRING(str FROM pos)
    从字符串str的起始位置pos返回一个子串。

    mysql> select SUBSTRING('Quadratically',5);
            -> 'ratically'
    mysql> select SUBSTRING('foobarbar' FROM 4);
            -> 'barbar'

    该函数是多字节可靠的。
SUBSTRING_INDEX(str,delim,count)
    返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。

    mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
            -> 'www.mysql'
    mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
            -> 'mysql.com'

    该函数对多字节是可靠的。
LTRIM(str)
    返回删除了其前置空格字符的字符串str。

    mysql> select LTRIM('  barbar');
            -> 'barbar'

RTRIM(str)
    返回删除了其拖后空格字符的字符串str。

    mysql> select RTRIM('barbar   ');
            -> 'barbar'

    该函数对多字节是可靠的。  

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
    返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。

    mysql> select TRIM('  bar   ');
            -> 'bar'
    mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
            -> 'barxxx'
    mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
            -> 'bar'
    mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
            -> 'barx'

    该函数对多字节是可靠的。
SOUNDEX(str)
    返回str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。

    mysql> select SOUNDEX('Hello');
            -> 'H400'
    mysql> select SOUNDEX('Quadratically');
            -> 'Q36324'
     

SPACE(N)
    返回由N个空格字符组成的一个字符串。

    mysql> select SPACE(6);
            -> '      '
     

REPLACE(str,from_str,to_str)
    返回字符串str,其字符串from_str的所有出现由字符串to_str代替。

    mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
            -> 'WwWwWw.mysql.com'

    该函数对多字节是可靠的。
REPEAT(str,count)
    返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。

    mysql> select REPEAT('MySQL', 3);
            -> 'MySQLMySQLMySQL'
     

REVERSE(str)
    返回颠倒字符顺序的字符串str。

    mysql> select REVERSE('abc');
            -> 'cba'

    该函数对多字节可靠的。
INSERT(str,pos,len,newstr)
    返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。

    mysql> select INSERT('Quadratic', 3, 4, 'What');
            -> 'QuWhattic'

    该函数对多字节是可靠的。
ELT(N,str1,str2,str3,...)
    如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。

    mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
            -> 'ej'
    mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
            -> 'foo'

FIELD(str,str1,str2,str3,...)
    返回str在str1, str2, str3, ...清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。

    mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
            -> 2
    mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
            -> 0

FIND_IN_SET(str,strlist)
    如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。

    mysql> SELECT FIND_IN_SET('b','a,b,c,d');
            -> 2
     

MAKE_SET(bits,str1,str2,...)
    返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在bits集合中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1, str2, ...中的NULL串不添加到结果中。

    mysql> SELECT MAKE_SET(1,'a','b','c');
            -> 'a'
    mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
            -> 'hello,world'
    mysql> SELECT MAKE_SET(0,'a','b','c');
            -> ''

EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
    返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个 “off”字符串。每个字符串用“separator”分隔(缺省“,”),并且只有“bits”的“number_of_bits” (缺省64)位被使用。

    mysql> select EXPORT_SET(5,'Y','N',',',4)
            -> Y,N,Y,N 

LCASE(str)
      
LOWER(str)
    返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。

    mysql> select LCASE('QUADRATICALLY');
            -> 'quadratically'
     

UCASE(str)
      
UPPER(str)
    返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。

    mysql> select UCASE('Hej');
            -> 'HEJ'

    该函数对多字节是可靠的。
LOAD_FILE(file_name)
    读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。文件必须所有内容都是可读的并且小于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL。

    mysql> UPDATE table_name
               SET blob_column=LOAD_FILE("/tmp/picture")
               WHERE id=1;


MySQL必要时自动变换数字为字符串,并且反过来也如此:

mysql> SELECT 1+"1";
        -> 2
mysql> SELECT CONCAT(2,' test');
        -> '2 test'

如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。

如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。 

2009年3月20日星期五

CSS实现背景透明效果

利用CSS实现背景透明效果的方法很简单,但目前不同的浏览器有着不同的标准,现在列出一个适合于各个浏览器的CSS代码合集,以供日后备用:

#snake{
  background: #666;
  filter:alpha(opacity=50); /*IE*/
  -moz-opacity:0.5; /*MOZ , FF*/
  opacity:0.5;/*CSS3, FF1.5*/
}

<div id="snake">背景透明效果</div>  

CSS屏幕居中

如何让DIV屏幕居中呢?以下的CSS代码可以有效帮助你实现这一点:


width:200px; margin-left:-100px; height:160x; margin-top:-80px; position:absolute; top:50%; left:50%;

新网站常用登录入口

建了一个网站却无人问津是非常痛苦的,不要急,以下给出了一些常用的登录入口,让你的网站先被搜索引擎收录吧!


google大概15天左右,百度大概30天 
添加百度登陆,尽量在各大搜索引擎登记一下,另外看看你搜索的关键字是什么,会不会范围太广了,有时网上类似你网站的名词太多话的会把你网站排到后面去的,另外多做一些外部链接,搜索引擎是通过连接来抓取的,多做外部链接对你网站快速收录有帮助 

搜索登记接入口 
Google搜索:
http://www.google.com/intl/zh-CN/add_url.html 

Google网页目录:
http://directory.google.com/Top/World/Chinese_Simplified/ 

百度搜索:
http://www.baidu.com/search/url_submit.html 百度搜霸下载 免费搜索代码 

百度网址站:
http://post.baidu.com/f?kw=百度site 

226自助链:
http://link.226.cc 

爱问搜索:
http://iask.com/guest/add_url.php 

雅虎搜索:
http://misc.yahoo.com.cn/search_submit.html 

网易有道搜索:
http://tellbot.yodao.com/report?keyFrom=help 

Yahoo! :
http://submit.search.yahoo.com/free/request/ 

中国搜索:
http://service.chinasearch.com.cn/NetSearch/pageurlrecord/frontpageurl.jsp 

有道搜索:
http://tellbot.yodao.com/report 

TOM搜索:
http://search.tom.com/tools/weblog/log.php 

天网搜索:
http://home.tianwang.com/denglu.htm 

MSN:
http://beta.search.msn.com/docs/submit.aspx 

Alexa:
http://pages.alexa.com/help/webmasters/index.html#crawl_site 

alltheweb:
http://www.alltheweb.com/help/webmaster/submit_site 

Gigablast:
http://www.gigablast.com/addurl 

2009年3月19日星期四

CSS小技巧:去除点击链接时的虚线框

点击链接时,会出现一个虚线框,感觉很不爽吧?用下面的CSS方法,可以有效的去除那个讨厌的虚线哦:


a,area { blr:expression(this.onFocus=this.blur()) } /* for IE */
:focus { -moz-outline-style: none; } /* for Firefox */ 


试试看,一定会令你满意。

基于jQuery获取浏览器宽高的函数

我们在设计网页时,经常遇到要获取浏览器宽高的数值,以下函数是基于jQuery,非常实用。


//获取浏览器高度
function getTotalHeight(){
  
if($.browser.msie){
   return document.compatMode == "CSS1Compat"?cument.documentElement.clientHeight :
document.body.clientHeight;
  }
else{
    return self.innerHeight;
  }

}


//获取浏览器宽度
function getTotalWidth (){
  if($.browser.msie){
   return document.compatMode == "CSS1Compat"?document.documentElement.clientWidth :document.body.clientWidth;
  }
else{
    
return self.innerWidth;
  }

}

[转]最常用的几个Chrome命令行参数功能详解

首先,在这里我觉得有必要提一下什么是命令行参数。简单的说,命令行参数也就是通过在程序的快捷方式目标后面添加一些特定的参数,来实现更酷更炫的效果。为Chrome添加命令行参数的方法很简单,直接右键Chrome快捷方式,然后点击“属性”,将命令行参数添加在“目标”栏的最后面即可,注意与主程序(Chrome.exe)之间有一个空格!

参数:--user-agent=“xxxxxxxx”
解释:将
浏览器的user agent设置成“xxxxxxxx”
功能描述:通过改变浏览器的UserAgent,可以将Chrome浏览器伪装成其他的浏览器,以实现Chrome浏览器本省不能支持的功能。
典型应用:
用Chrome浏览器免费订阅国外收费杂志
使用方法:后面的xxxxxxx为变量,可以更改为你需要的字符,比如将Chrome的useragent更改为
www.wechrome.cn,则在快捷方式后面添加 --user-agent=“www.wechrome.cn
参数:--user-data-dir=“[PATH]”
解释:将浏览器的数据存放地点设置到指定路径
功能描述:可以将浏览器数据存放地点设置到非
系统盘避免重新安装系统后浏览器数据(cookies\书签、历史记录、密码等)丢失。
使用方法:后面的[PATH]为变量,可以更改为你想要指定的路径,如D:\mychrome\,更改并运行之后程序会自动在D盘创建一个mychrome目录,存放浏览器数据。
参数:--Firstrun
解释:将浏览器设置为首次运行状态
功能描述:将浏览器设置为首次运行状态可以实现导入IE、Firefox最新数据的功能。
使用方法:直接将命令行
参数添加到快捷方式目标后面。
参数:--incognito
解释:设置浏览器直接从隐身模式启动
功能描述:设置浏览器直接从隐身模式启动
使用方法:直接将命令行
参数添加到快捷方式目标后面。
参数:--force-https
解释:只允许加载HTTPS安全站点
功能描述:只允许加载HTTPS安全站点,普通HTTP站点不加载
使用方法:直接将命令行
参数添加到快捷方式目标后面。
参数:--disable-javascript
解释:禁止Javascript运行
功能描述:通过禁止Javascript脚本运行,可以屏蔽
页面上的很多广告,但是也可能导致一些非广告的单元不能显示。
扩展应用:--disable-images(禁止显示页面图像,网速慢的可考虑);--disable-Java(禁止Java程序运行)等等。
使用方法:直接将命令行
参数添加到快捷方式目标后面。
参数:--omnibox-popup-count="num"
解释:将地址栏弹出菜单的数量改为num个。注意num只能是一个阿拉伯数字,如30,则为--omnibox-popup-count="30"
功能描述:让一框多用更加强大
使用方法:将命令行
参数添加到快捷方式目标后面,并更改引号内为你想要的值。

2009年3月15日星期日

利用CSS·实现自动链接图标

经常看到一些网站,在对某些特定文件类型做链接时,左边会出现一个专用的链接图标,我们能否通过CSS设置来实现这一功能呢?答案是肯定的,看看下面的样例:
HTML的代码是这样写的:
<a href="http://www.blogger.com/news/issue12.pdf">View Latest Issue</a>
利用CSS可以这样实现:
a[href $='.pdf'] { padding-right: 18px;  background: transparent url(icon_pdf.gif) no-repeat center right; }
OK,一个类似于上方的PDF图标自动显示功能就这样实现了,你还可以加以扩展,加上对DOC、WPS、PPT等文件的支持,是不是很简单呀?

HTML/XHTML字符列表

以下是HTML/XHTML的字符列表,非常实用,具有一定的参考价值:


&nbsp; &ndash; &minus; °&deg; Δ&Delta; α&alpha; À&Agrave; à&agrave; Ç&Ccedil;
&euro; &mdash; ±&plusmn; º&ordm; Λ&Lambda; β&beta; Á&Aacute; á&aacute; ç&ccedil;
¢&cent; &hellip; &radic; ª&ordf; Θ&Theta; γ&gamma; Â&Acirc; â&acirc; Ð&ETH;
£&pound; §&sect; &infin; ¹&sup1; Ξ&Xi; δ&delta; Ã&Atilde; ã&atilde; ð&eth;
¥&yen; &para; &prop; ²&sup2; Π&Pi; ε&epsilon; Ä&Auml; ä&auml; Ñ&Ntilde;
¤&curren; &dagger; ×&times; ³&sup3; Σ&Sigma; ζ&zeta; Å&Aring; å&aring; ñ&ntilde;
ƒ&fnof; &Dagger; ÷&divide; ¼&frac14; Φ&Phi; η&eta; Æ&AElig; æ&aelig; Š&Scaron;
©&copy; ¡&iexcl; &sim; ½&frac12; Ψ&Psi; θ&theta; È&Egrave; è&egrave; š&scaron;
®&reg; ¿&iquest; &asymp; ¾&frac34; Ω&Omega; ι&iota; É&Eacute; é&eacute; ß&szlig;
&trade; &permil; &cong; &there4; &nabla; κ&kappa; Ê&Ecirc; ê&ecirc; Þ&THORN;
&bull; ·&middot; &equiv; &loz; &int; λ&lambda; Ë&Euml; ë&euml; þ&thorn;
<&lt; &lsquo; &le; &cap; &sum; μ&mu; Ì&Igrave; ì&igrave; ´&acute;
>&gt; &rsquo; &ge; &cup; &prod; ν&nu; Í&Iacute; í&iacute; ¨&uml;
&lsaquo; &sbquo; &ne; &and; &sube; ξ&xi; Î&Icirc; î&icirc; ¸&cedil;
&rsaquo; &ldquo; &prime; &or; &supe; ο&omicron; Ï&Iuml; ï&iuml; ˆ&circ;
«&laquo; &rdquo; &Prime; &isin; &sub; π&pi; Ò&Ograve; ò&ograve; ˜&tilde;
»&raquo; &bdquo; &weierp; &notin; &nsub; ρ&rho; Ó&Oacute; ó&oacute; Ґ&#1168;
"&quot; ¬&not; &image; &ni; &sup; ς&sigmaf; Ô&Ocirc; ô&ocirc; ґ&#1169;
&&amp; ¦&brvbar; &real; &ang; &oplus; σ&sigma; Õ&Otilde; õ&otilde; І&#1030;
µ&micro; ­&shy; &alefsym; &spades; &otimes; τ&tau; Ö&Ouml; ö&ouml; і&#1110;
&oline; ¯&macr; &sdot; &clubs; &lceil; υ&upsilon; Ø&Oslash; ø&oslash; Ї&#1031;
&frasl; &ensp; &lowast; &diams; &rceil; φ&phi; Œ&OElig; œ&oelig; ї&#1111;
&part; &emsp; &crarr; &hearts; &lfloor; χ&chi; Ù&Ugrave; ù&ugrave; Є&#1028;
&perp; &thinsp; &uarr; &uArr; &rfloor; ψ&psi; Ú&Uacute; ú&uacute; є&#1108;
&empty; &zwnj; &darr; &dArr; &lang; ω&omega; Û&Ucirc; û&ucirc; &#8362;
&forall; &zwj; &larr; &lArr; &rang; ϑ&thetasym; Ü&Uuml; ü&uuml; &#9786;
&exist; &#8252; &rarr; &rArr; &#9792; ϒ&upsih; Ý&Yacute; ý&yacute; &#9787;
&#8708; &#8470; &harr; &hArr; &#9794; ϖ&piv; Ÿ&Yuml; ÿ&yuml; &#9608;