<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>飞扬轻狂's blog</title>
	<atom:link href="http://blog.fallseir.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fallseir.com</link>
	<description>我心飞扬 我意轻狂</description>
	<pubDate>Fri, 24 Oct 2008 09:34:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>谨慎的在c++中使用cin进行交互</title>
		<link>http://blog.fallseir.com/2008/10/note_std_cin/</link>
		<comments>http://blog.fallseir.com/2008/10/note_std_cin/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 09:34:28 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[随笔]]></category>

		<category><![CDATA[c++]]></category>

		<category><![CDATA[cin]]></category>

		<category><![CDATA[fallseir]]></category>

		<category><![CDATA[learn]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=107</guid>
		<description><![CDATA[在使用c++ 进行控制台交互时 也许你也容易忽略掉的细节
&#8211; 飞扬轻狂 20081024 fallseir[at]gmail.com
http://blog.fallseir.com/2008/10/note_std_cinnote_std_cin/
注意1： &#8221; cin >> value &#8221; 没有正确的读取换行
注意2： 不匹配的类型 将导致输入流错误 而在其后的调用中自动返回
注意3： 空字符 在使用 >> 赋值给变量时将自动过滤 直到读入非空字符为止
出错的代码 ！！

$ vim 02-05-BasicIO-err.cpp
---------------------------------------------
#include 
using namespace std;
int main( int argc, char *argv[] ){
  int num;
  string str,line;

  cout > num;
  cout > str;
  cout ]]></description>
			<content:encoded><![CDATA[<p>在使用c++ 进行控制台交互时 也许你也容易忽略掉的细节</p>
<p>&#8211; 飞扬轻狂 20081024 fallseir[at]gmail.com<br />
http://blog.fallseir.com/2008/10/note_std_cinnote_std_cin/</p>
<p>注意1： &#8221; cin >> value &#8221; 没有正确的读取换行<br />
注意2： 不匹配的类型 将导致输入流错误 而在其后的调用中自动返回<br />
注意3： 空字符 在使用 >> 赋值给变量时将自动过滤 直到读入非空字符为止</p>
<p>出错的代码 ！！</p>
<pre>
$ vim 02-05-BasicIO-err.cpp
---------------------------------------------
#include <iostream>
using namespace std;
int main( int argc, char *argv[] ){
  int num;
  string str,line;

  cout << "Please enter a number:" ;
  cin >> num;
  cout << "Please enter a text :" ;
  cin >> str;
  cout << "Please enter some words :" ;
  getline( cin, line );

  cout << endl;
  cout << "number : " << num << endl;
  cout << "text : " << str << endl;
  cout << "some words : " << line << endl;

  return 0;
}
---------------------------------------------
$ g++ 02-05-BasicIO-err.cpp
$ a.out # 貌似正确的输入
----------------
Please enter a number:12<enter>
Please enter a text :message<enter>
Please enter some words :
number : 12
text : message
some words :
----------------
/*
 分析原因：
 第二次输入 "message" 的时候 自动过滤前次的<enter> 并得到了正确的值
 getline 的时候 因为输入流中还有一个 <enter> 没有被读取 所以没有等待用户输入，直接返回了
 */
--------------------
$ a.out # 貌似正确的结果
----------------
Please enter a number:13 message some words in the line <enter>
Please enter a text :Please enter some words :
number : 13
text : message
some words :  some words in the line
----------------
/*
 分析原因：
 cin >> str 的时候 从流中读取了 "message"
 getline 的时候 读取了流中剩下的内容
 */
--------------------
$ a.out # 错误的开始
----------------
Please enter a number:a
Please enter a text :Please enter some words :
number : 6696948
text :
some words :
----------------
/*
 分析原因：
 cin >> num 的时候 从流中读取了不匹配的数据 "a" ，cin 进入异常状态
 cin >> str 和 getline 的时候 因为流异常 所以没有进行读取
 */
--------------------
</pre>
<p>优化的严谨的代码</p>
<pre>
$ vim 02-05-BasicIO.cpp
---------------------------------------------
#include <iostream>
using namespace std;
int main( int argc, char *argv[] ){
  int num;
  string str,line;
  string tmp;

  cout << "Please enter a number:" ;
  cin >> num;
  while(cin.fail()){ // 如果出现错误
    cin.clear(); // 清除错误
    getline(cin,tmp); // 清除缓存
    cerr << "Error input!!,Please try again" << endl;
    cin >> num;
  }
  getline(cin,tmp); // 使用getline清除缓存，因为 >> 操作符不会对末尾的 <enter> 进行读取 

  cout << "Please enter a text :" ;
  cin >> str;
  getline(cin,tmp);

  cout << "Please enter some words :" ;
  getline( cin, line );
  cout << endl;
  cout << "number : " << num << endl;
  cout << "text : " << str << endl;
  cout << "some words : " << line << endl;

  return 0;
}

---------------------------------------------
----------------
$ a.out
----------------
Please enter a number:123 message test words!
Please enter a text :word and message
Please enter some words :some words in the line!

number : 123
text : word
some words : some words in the line!
----------------
</pre>
<p>&#8211;<br />
http://blog.fallseir.com/2008/10/note_std_cinnote_std_cin/<br />
飞扬轻狂<br />
fallseir[at]gmail.com<br />
blog.fallseir.com<br />
2008年10月24日<br />
转载请注明</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/10/note_std_cin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>使用mysqldump进行单表备份</title>
		<link>http://blog.fallseir.com/2008/10/mysqldump_tables/</link>
		<comments>http://blog.fallseir.com/2008/10/mysqldump_tables/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 09:17:39 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[笔记]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[mysqldump]]></category>

		<category><![CDATA[X shell]]></category>

		<category><![CDATA[数据备份]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=99</guid>
		<description><![CDATA[写了一个shell脚本 对数据库中每个表进行备份 这样可以方便的在表中进行筛选
bak_db_table.sh
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;

# bak_db_table.sh db db_host db_user db_passwd > log.txt
# by fallseir at 20081010

if [ $1 ] # 如果没有参数
then
echo database $1;
else
echo 'backup database tables to gzip files
sh bak_db_table.sh db [db_host] [db_user] [db_passwd]
'; exit;
fi

# 参数赋值
[ $1 ] &#038;&#038; db=$1
[ $2 ] &#038;&#038; dbh=$2
[ $3 ] &#038;&#038; dbu=$3
[ $4 ] &#038;&#038; dbp=$4

# 配置数据库参数
[ $dbh ] &#038;&#038; dbh="-h"$dbh
[ [...]]]></description>
			<content:encoded><![CDATA[<p>写了一个shell脚本 对数据库中每个表进行备份 这样可以方便的在表中进行筛选</p>
<p>bak_db_table.sh<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<pre>
# bak_db_table.sh db db_host db_user db_passwd > log.txt
# by fallseir at 20081010

if [ $1 ] # 如果没有参数
then
echo database $1;
else
echo 'backup database tables to gzip files
sh bak_db_table.sh db [db_host] [db_user] [db_passwd]
'; exit;
fi

# 参数赋值
[ $1 ] &#038;&#038; db=$1
[ $2 ] &#038;&#038; dbh=$2
[ $3 ] &#038;&#038; dbu=$3
[ $4 ] &#038;&#038; dbp=$4

# 配置数据库参数
[ $dbh ] &#038;&#038; dbh="-h"$dbh
[ $dbu ] &#038;&#038; dbu="-u"$dbu
[ $dbp ] &#038;&#038; dbp="-p"$dbp

#如果不存在 以db命名的目录 则创建
[ -a $db ] || mkdir $db; echo "mkdir $db"

# 获取数据库中的表列表
echo 'list=(`echo "show tables;"|mysql -h$dbh -u$dbu -p$dbp $db`)'
list=(`echo "show tables;"|mysql $dbh $dbu $dbp $db`)
# 获取表个数
tbcount=$((${#list[@]}-2))
if [ $tbcount= -2 ] # 如果表不存在 或数据库连接失败
then
  echo empty tables in $db or connent failed! ; exit 1;
fi
echo table count: $tbcount

# 对每个表进行备份 并压缩
# 使用gzip -d $file 进行解压
# 使用 mysql $database < $bakfile 进行恢复
for (( i = 1 ; i < ($tbcount+1) ; i ++ ))
do
  table=${list[$i]}
  echo back table $table
  mysqldump $dbh $dbu $dbp $db $table | gzip -c > $db/177.6.db.$db.$table.gz
# $? 前一命令的返回值, 0 为成功 1为失败 但mysqldump没有遵守这个约定
  echo back table $table $?
  sleep 10
done
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/10/mysqldump_tables/feed/</wfw:commentRss>
		</item>
		<item>
		<title>shell 中使用数组 array</title>
		<link>http://blog.fallseir.com/2008/10/array_in_shell/</link>
		<comments>http://blog.fallseir.com/2008/10/array_in_shell/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 07:17:15 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[shell]]></category>

		<category><![CDATA[笔记]]></category>

		<category><![CDATA[array]]></category>

		<category><![CDATA[数组]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=94</guid>
		<description><![CDATA[发现shell中的数组使用方法
fallseir &#8212; http://blog.fallseir.com/2008/10/array_in_shell/ 
$ arr=(123 34 3 5)
$ echo $arr // 默认获取第一个元素
> 123
$ echo ${arr[1]} // 通过下标访问
> 34
$ echo ${arr[@]}     // 访问整个数组 ，@或者* 获取整个数组
> 123 34 3 5
$ echo ${#arr[@]}   // 获取数组的长度（最大下标） ，#获取长度 数组中是最后一个下标
> 3
$ echo ${#arr[3]}   // 获取字符串长度
> 1
$ echo ${arr[@]:1:2} // 切片方式获取一部分数组内容
> 34 3
$ echo [...]]]></description>
			<content:encoded><![CDATA[<p>发现shell中的数组使用方法<br />
fallseir &#8212; http://blog.fallseir.com/2008/10/array_in_shell/ </p>
<p>$ arr=(123 34 3 5)<br />
$ echo $arr // 默认获取第一个元素<br />
> 123<br />
$ echo ${arr[1]} // 通过下标访问<br />
> 34<br />
$ echo ${arr[@]}     // 访问整个数组 ，@或者* 获取整个数组<br />
> 123 34 3 5<br />
$ echo ${#arr[@]}   // 获取数组的长度（最大下标） ，#获取长度 数组中是最后一个下标<br />
> 3<br />
$ echo ${#arr[3]}   // 获取字符串长度<br />
> 1<br />
$ echo ${arr[@]:1:2} // 切片方式获取一部分数组内容<br />
> 34 3<br />
$ echo ${arr[@]:2} // 从第二个元素开始<br />
> 3 5<br />
$ echo ${arr[@]::2} // 到第二个元素<br />
> 123 34</p>
<p>参考 http://www.tech-recipes.com/rx/642/bash-shell-script-accessing-array-variables/</p>
<p>array 的模拟操作<br />
&#8211; http://www.tech-recipes.com/rx/911/queue-and-stack-using-array/<br />
push:<br />
array=(”${array[@]}” $new_element)</p>
<p>pop:<br />
array=(${array[@]:0:$((${#array[@]}-1))})</p>
<p>shift:<br />
array=(${array[@]:1})</p>
<p>unshift<br />
array=($new_element “${array[@]}”)</p>
<p>function del_array {<br />
local i<br />
for (( i = 0 ; i < ${#array[@]} ; i++ ))<br />
do<br />
if [ "$1" = "${array[$i]}&#8221; ] ;then<br />
break<br />
fi<br />
done<br />
del_array_index $i<br />
}</p>
<p>function del_array_index {<br />
array=(${array[@]:0:$1} ${array[@]:$(($1 + 1))})<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/10/array_in_shell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>通过.htaccess 配置cgi环境</title>
		<link>http://blog.fallseir.com/2008/06/cgihtaccess/</link>
		<comments>http://blog.fallseir.com/2008/06/cgihtaccess/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 10:18:19 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[随笔]]></category>

		<category><![CDATA[cgi]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=93</guid>
		<description><![CDATA[1、配置 .htaccess
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
AddHandler cgi-script .cgi .pl #添加handler
Options +ExecCGI # 允许目录执行cgi
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
2、更改目录权限为apche apache可以执行目录下的文件
3、测试 test.cgi
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
#!/usr/bin/perl
print &#8220;Content-type: text/html\n\n&#8221;;
print &#8220;Hello, World.&#8221;;
]]></description>
			<content:encoded><![CDATA[<p>1、配置 .htaccess<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
AddHandler cgi-script .cgi .pl #添加handler<br />
Options +ExecCGI # 允许目录执行cgi<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
2、更改目录权限为apche apache可以执行目录下的文件<br />
3、测试 test.cgi<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
#!/usr/bin/perl<br />
print &#8220;Content-type: text/html\n\n&#8221;;<br />
print &#8220;Hello, World.&#8221;;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/06/cgihtaccess/feed/</wfw:commentRss>
		</item>
		<item>
		<title>一段用于替换字符串中指定的key的代码</title>
		<link>http://blog.fallseir.com/2008/05/mapkeys/</link>
		<comments>http://blog.fallseir.com/2008/05/mapkeys/#comments</comments>
		<pubDate>Tue, 06 May 2008 09:58:02 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[fallseir]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=89</guid>
		<description><![CDATA[一段用于替换字符串中指定的key的代码
&#8211;[[User:Fallseir&#124;飞扬轻狂]] 2008年5月6日 (二) 02:32 (PDT)
$str=mapKeys($formatstr,$maps);
$str=&#8220;replace&#160;this&#160;template&#160;string&#160;!the&#160;key&#160;maps&#160;is&#160;herekey1=&#62;{key1},key{{2=&#62;{key{2},key3}=&#62;{key3{}}&#8221;;echo&#160;mapKeys($str&#160;&#160;,array(&#8220;key1&#8243;=&#62;&#8220;value&#160;1&#8243;&#160;&#160;,&#8220;key{2&#8243;=&#62;&#8220;value&#160;2&#8243;&#160;&#160;,&#8220;key3}&#8221;=&#62;&#8220;value&#160;3&#8243;&#160;&#160;));echo&#160;&#8220;\n&#8221;
output>>
replace this template string !the key maps is here
key1=>value 1,key{2=>value 2,key3}=>value 3
abc[the abc value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the %value% 2],%%[the %value% 2],%$$%%{,%,
abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,
$ php -r &#8216;highlight_file(&#8221;test.php&#8221;);&#8217;

&#60;?php/**&#160;test&#160;*/$str=&#8220;replace&#160;this&#160;template&#160;string&#160;!the&#160;key&#160;maps&#160;is&#160;herekey1=&#62;{key1},key{{2=&#62;{key{2},key3}=&#62;{key3{}}&#8221;;echo&#160;mapKeys($str&#160;&#160;,array(&#8220;key1&#8243;=&#62;&#8220;value&#160;1&#8243;&#160;&#160;,&#8220;key{2&#8243;=&#62;&#8220;value&#160;2&#8243;&#160;&#160;,&#8220;key3}&#8221;=&#62;&#8220;value&#160;3&#8243;&#160;&#160;));echo&#160;&#8220;\n&#8221;;
$str=&#8220;abc{key}{}}%{%{}%%%}%{{%{0{}%%,%%%,{key},%%,%%{key,2},%%{key,2},%$$%%{,%,&#8221;;echo&#160;mapKeys($str,array(&#8220;key&#8221;=&#62;&#8220;[the&#160;abc&#160;value]&#8220;,&#8220;key,2&#8243;=&#62;&#8220;[the&#160;%value%&#160;2]&#8220;));echo&#160;&#8220;\n&#8221;;
$str=&#8220;abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,&#8221;;echo&#160;mapKeys($str,array(&#8220;key&#8221;=&#62;&#8220;[the&#160;abc&#160;value]&#8220;&#160;&#160;&#160;&#160;,&#8220;key,2&#8243;=&#62;&#8220;[the&#160;%value%&#160;2]&#8220;),&#8220;&#124;%&#124;&#8221;);echo&#160;&#8220;\n&#8221;;//end&#160;test*//*$&#160;php&#160;test.phpoutput&#62;&#62;replace&#160;this&#160;template&#160;string&#160;!the&#160;key&#160;maps&#160;is&#160;herekey1=&#62;value&#160;1,key{2=&#62;value&#160;2,key3}=&#62;value&#160;3abc[the&#160;abc&#160;value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the&#160;%value%&#160;2],%%[the&#160;%value%&#160;2],%$$%%{,%,abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,&#160;&#160;*/&#160;&#160;/**&#160;*&#160;使用maps中定义的value替换对应其key的由开始标记字符和结束标记字符包含的字符串&#160;*&#160;*&#160;当标记对外开始标记后跟着开始标记时或结束标记时表示第一个开始标记为转义符&#160;*&#160;当标记对内开始标记后跟着结束标记时表示第一个开始标记为转义符&#160;*&#160;末尾没有匹配的开始标记将原样输出&#160;*/function&#160;mapKeys($str,$maps,$fstart=null,$fend=null){&#160;&#160;if(!$fstart){&#160;&#160;&#160;&#160;&#160;&#160;$fstart=&#8220;{&#8221;;&#160;&#160;&#160;&#160;&#160;&#160;$fend=&#8220;}&#8221;;&#160;&#160;}&#160;&#160;if(!$fend){&#160;&#160;&#160;&#160;$fend=$fstart;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;//&#160;如果标记相同则使用mapKeysBase进行替换&#160;&#160;if($fstart==$fend){return&#160;mapKeysBase($str,$maps,$fstart);}&#160;&#160;&#160;$index=0;&#160;&#160;$offset=0;&#160;&#160;while(false!==($index=strpos($str,$fstart,$offset))){&#160;&#160;&#160;&#160;#&#160;找到开始标记,处理开始标记之前的数据&#160;&#160;&#160;&#160;$v=substr($str,$offset,$index-$offset);&#160;&#160;&#160;&#160;$offset=$index+strlen($fstart);&#160;&#160;&#160;&#160;$p=true;&#160;&#160;&#160;&#160;while(($find=substr($str,$offset,strlen($fstart)))==$fstart&#160;&#160;&#160;&#160;&#160;&#160;&#124;&#124;($find=substr($str,$offset,strlen($fend)))==$fend){&#160;&#160;&#160;&#160;&#160;&#160;$v.=$find;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$offset+strlen($find);&#160;&#160;&#160;&#160;&#160;&#160;$p=false;#&#160;如果这个标记是用来转义的&#160;&#160;&#160;&#160;&#160;&#160;if(false!==($index=strpos($str,$fstart,$offset))){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v.=substr($str,$offset,$index-$offset);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$index+strlen($fstart);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$p=true;#&#160;查找下一个开始标记&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;$o.=$v;&#160;&#160;&#160;&#160;$v=&#8220;&#8221;;&#160;&#160;&#160;&#160;#&#160;标记了开始&#160;并找到了&#160;结束&#160;&#160;&#160;&#160;while($p&#160;&#160;&#160;&#160;&#160;&#160;&#38;&#38;false!==($end=strpos($str,$fend,$offset))){&#160;&#160;&#160;&#160;&#160;&#160;$v.=substr($str,$offset,$end-$offset);&#160;&#160;&#160;&#160;&#160;&#160;#&#160;如果这个标记是被转义的&#160;&#160;&#160;&#160;&#160;&#160;if(($find=substr($str,$end-strlen($fend),strlen($fstart)))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;==$fstart){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v=substr($v,0,strlen($v)-strlen($fstart)).$fend;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$end+strlen($fend);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;continue;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;$p=false;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;if($v){&#160;&#160;&#160;&#160;&#160;&#160;if(array_key_exists($v,$maps)){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v=$maps[$v];&#160;&#160;&#160;&#160;&#160;&#160;}else{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v=&#8220;[".$v."]&#8220;;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;$o.=$v;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$end+strlen($fend);&#160;&#160;&#160;&#160;}&#160;&#160;}&#160;&#160;if($p){&#160;&#160;&#160;&#160;$o.=$fstart;&#160;&#160;}&#160;&#160;$v=substr($str,$offset);&#160;&#160;$o.=$v;&#160;&#160;return&#160;$o;}/**&#160;*&#160;使用maps中定义的value替换对应其key的由标记字符包含的字符串&#160;*&#160;*&#160;如果标记重复出现&#160;则第一个为转义字符（这也意味着标记字符不能作为key的开始字符）&#160;*/function&#160;mapKeysBase($str,$maps,$find=null){&#160;&#160;if(!$find){&#160;&#160;&#160;&#160;$find=&#8220;%&#8221;;&#160;&#160;}&#160;&#160;$p=false;&#160;&#160;$v=&#8220;&#8221;;&#160;&#160;$index=0;&#160;&#160;$offset=0;&#160;&#160;while(false!==($index=strpos($str,$find,$offset))){&#160;&#160;&#160;&#160;$v.=substr($str,$offset,$index-$offset);&#160;&#160;&#160;&#160;$offset=$index+strlen($find);&#160;&#160;&#160;&#160;while(substr($str,$offset,strlen($find))==$find){&#160;&#160;&#160;&#160;&#160;&#160;$v.=$find;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$offset+strlen($find);&#160;&#160;&#160;&#160;&#160;&#160;if(false!==($index=strpos($str,$find,$offset))){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v.=substr($str,$offset,$index-$offset);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$offset=$index+strlen($find);&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;if($p){&#160;&#160;&#160;&#160;&#160;&#160;if(array_key_exists($v,$maps)){&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v=$maps[$v];&#160;&#160;&#160;&#160;&#160;&#160;}else{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$v=&#8220;[".$v."]&#8220;;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;$o.=$v;&#160;&#160;&#160;&#160;&#160;&#160;$v=&#8220;&#8221;;&#160;&#160;&#160;&#160;&#160;&#160;$p=false;&#160;&#160;&#160;&#160;}else{&#160;&#160;&#160;&#160;&#160;&#160;$o.=$v;&#160;&#160;&#160;&#160;&#160;&#160;$v=&#8220;&#8221;;&#160;&#160;&#160;&#160;&#160;&#160;$p=true;&#160;&#160;&#160;&#160;}&#160;&#160;}&#160;&#160;if($p){&#160;&#160;&#160;&#160;$v.=$find;&#160;&#160;}&#160;&#160;$v.=substr($str,$offset);&#160;&#160;$o.=$v;&#160;&#160;return&#160;$o;}?&#62;

取自&#8221;http://www.fallseir.com/wiki/PHP/MapKeys.html&#8221;
]]></description>
			<content:encoded><![CDATA[<p>一段用于替换字符串中指定的key的代码</p>
<p>&#8211;[[User:Fallseir|飞扬轻狂]] 2008年5月6日 (二) 02:32 (PDT)<br />
$str=mapKeys($formatstr,$maps);</p>
<p><span style="color: #0000BB">$str</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;replace&nbsp;this&nbsp;template&nbsp;string&nbsp;!the&nbsp;key&nbsp;maps&nbsp;is&nbsp;here<br />key1=&gt;{key1},key{{2=&gt;{key{2},key3}=&gt;{key3{}}&#8221;</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">mapKeys</span><span style="color: #007700">(</span><span style="color: #0000BB">$str<br />&nbsp;&nbsp;</span><span style="color: #007700">,array(</span><span style="color: #DD0000">&#8220;key1&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;1&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key{2&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;2&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key3}&#8221;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;3&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">)<br />);<br />echo&nbsp;</span><span style="color: #DD0000">&#8220;\n&#8221;</span></p>
<p>output>><br />
replace this template string !the key maps is here<br />
key1=>value 1,key{2=>value 2,key3}=>value 3<br />
abc[the abc value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the %value% 2],%%[the %value% 2],%$$%%{,%,<br />
abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,</p>
<p>$ php -r &#8216;highlight_file(&#8221;test.php&#8221;);&#8217;</p>
<p><code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/**&nbsp;test&nbsp;*/<br /></span><span style="color: #0000BB">$str</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;replace&nbsp;this&nbsp;template&nbsp;string&nbsp;!the&nbsp;key&nbsp;maps&nbsp;is&nbsp;here<br />key1=&gt;{key1},key{{2=&gt;{key{2},key3}=&gt;{key3{}}&#8221;</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">mapKeys</span><span style="color: #007700">(</span><span style="color: #0000BB">$str<br />&nbsp;&nbsp;</span><span style="color: #007700">,array(</span><span style="color: #DD0000">&#8220;key1&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;1&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key{2&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;2&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key3}&#8221;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;value&nbsp;3&#8243;<br />&nbsp;&nbsp;</span><span style="color: #007700">)<br />);<br />echo&nbsp;</span><span style="color: #DD0000">&#8220;\n&#8221;</span><span style="color: #007700">;</p>
<p></span><span style="color: #0000BB">$str</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;abc{key}{}}%{%{}%%%}%{{%{0{}%%,%%%,{key},%%,%%{key,2},%%{key,2},%$$%%{,%,&#8221;</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">mapKeys</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,array(</span><span style="color: #DD0000">&#8220;key&#8221;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;[the&nbsp;abc&nbsp;value]&#8220;<br /></span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key,2&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;[the&nbsp;%value%&nbsp;2]&#8220;</span><span style="color: #007700">));<br />echo&nbsp;</span><span style="color: #DD0000">&#8220;\n&#8221;</span><span style="color: #007700">;</p>
<p></span><span style="color: #0000BB">$str</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,&#8221;</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">mapKeys</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,array(</span><span style="color: #DD0000">&#8220;key&#8221;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;[the&nbsp;abc&nbsp;value]&#8220;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">&#8220;key,2&#8243;</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">&#8220;[the&nbsp;%value%&nbsp;2]&#8220;</span><span style="color: #007700">),</span><span style="color: #DD0000">&#8220;|%|&#8221;</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #DD0000">&#8220;\n&#8221;</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">//end&nbsp;test*/<br />/*<br />$&nbsp;php&nbsp;test.php<br />output&gt;&gt;<br />replace&nbsp;this&nbsp;template&nbsp;string&nbsp;!the&nbsp;key&nbsp;maps&nbsp;is&nbsp;here<br />key1=&gt;value&nbsp;1,key{2=&gt;value&nbsp;2,key3}=&gt;value&nbsp;3<br />abc[the&nbsp;abc&nbsp;value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the&nbsp;%value%&nbsp;2],%%[the&nbsp;%value%&nbsp;2],%$$%%{,%,<br />abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,<br />&nbsp;<br />&nbsp;*/<br />&nbsp;<br />&nbsp;<br />/**<br />&nbsp;*&nbsp;使用maps中定义的value替换对应其key的由开始标记字符和结束标记字符包含的字符串<br />&nbsp;*<br />&nbsp;*&nbsp;当标记对外开始标记后跟着开始标记时或结束标记时表示第一个开始标记为转义符<br />&nbsp;*&nbsp;当标记对内开始标记后跟着结束标记时表示第一个开始标记为转义符<br />&nbsp;*&nbsp;末尾没有匹配的开始标记将原样输出<br />&nbsp;*/<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">mapKeys</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$maps</span><span style="color: #007700">,</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">=</span><span style="color: #0000BB">null</span><span style="color: #007700">,</span><span style="color: #0000BB">$fend</span><span style="color: #007700">=</span><span style="color: #0000BB">null</span><span style="color: #007700">){<br />&nbsp;&nbsp;if(!</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;{&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fend</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;}&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if(!</span><span style="color: #0000BB">$fend</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fend</span><span style="color: #007700">=</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;如果标记相同则使用mapKeysBase进行替换<br />&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">==</span><span style="color: #0000BB">$fend</span><span style="color: #007700">){return&nbsp;</span><span style="color: #0000BB">mapKeysBase</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$maps</span><span style="color: #007700">,</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">);}<br />&nbsp;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;while(</span><span style="color: #0000BB">false</span><span style="color: #007700">!==(</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;找到开始标记,处理开始标记之前的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">$index</span><span style="color: #007700">-</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$index</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((</span><span style="color: #0000BB">$find</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">)))==</span><span style="color: #0000BB">$fstart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">||(</span><span style="color: #0000BB">$find</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fend</span><span style="color: #007700">)))==</span><span style="color: #0000BB">$fend</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">$find</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$offset</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$find</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">false</span><span style="color: #007700">;</span><span style="color: #FF8000">#&nbsp;如果这个标记是用来转义的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">false</span><span style="color: #007700">!==(</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">$index</span><span style="color: #007700">-</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$index</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">true</span><span style="color: #007700">;</span><span style="color: #FF8000">#&nbsp;查找下一个开始标记<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;标记了开始&nbsp;并找到了&nbsp;结束<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">while(</span><span style="color: #0000BB">$p<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&amp;&amp;</span><span style="color: #0000BB">false</span><span style="color: #007700">!==(</span><span style="color: #0000BB">$end</span><span style="color: #007700">=</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$fend</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">$end</span><span style="color: #007700">-</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;如果这个标记是被转义的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if((</span><span style="color: #0000BB">$find</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$end</span><span style="color: #007700">-</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fend</span><span style="color: #007700">),</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">)))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$v</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">,</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$v</span><span style="color: #007700">)-</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">)).</span><span style="color: #0000BB">$fend</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$end</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fend</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$v</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$v</span><span style="color: #007700">,</span><span style="color: #0000BB">$maps</span><span style="color: #007700">)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #0000BB">$maps</span><span style="color: #007700">[</span><span style="color: #0000BB">$v</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;["</span><span style="color: #007700">.</span><span style="color: #0000BB">$v</span><span style="color: #007700">.</span><span style="color: #DD0000">"]&#8220;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$end</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$fend</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if(</span><span style="color: #0000BB">$p</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$fstart</span><span style="color: #007700">;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">;<br />}<br /></span><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;使用maps中定义的value替换对应其key的由标记字符包含的字符串<br />&nbsp;*<br />&nbsp;*&nbsp;如果标记重复出现&nbsp;则第一个为转义字符（这也意味着标记字符不能作为key的开始字符）<br />&nbsp;*/<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">mapKeysBase</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$maps</span><span style="color: #007700">,</span><span style="color: #0000BB">$find</span><span style="color: #007700">=</span><span style="color: #0000BB">null</span><span style="color: #007700">){<br />&nbsp;&nbsp;if(!</span><span style="color: #0000BB">$find</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$find</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;%&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;while(</span><span style="color: #0000BB">false</span><span style="color: #007700">!==(</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$find</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">$index</span><span style="color: #007700">-</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$index</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$find</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$find</span><span style="color: #007700">))==</span><span style="color: #0000BB">$find</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">$find</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$offset</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$find</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">false</span><span style="color: #007700">!==(</span><span style="color: #0000BB">$index</span><span style="color: #007700">=</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$find</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">,</span><span style="color: #0000BB">$index</span><span style="color: #007700">-</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset</span><span style="color: #007700">=</span><span style="color: #0000BB">$index</span><span style="color: #007700">+</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$find</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$p</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$v</span><span style="color: #007700">,</span><span style="color: #0000BB">$maps</span><span style="color: #007700">)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #0000BB">$maps</span><span style="color: #007700">[</span><span style="color: #0000BB">$v</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;["</span><span style="color: #007700">.</span><span style="color: #0000BB">$v</span><span style="color: #007700">.</span><span style="color: #DD0000">"]&#8220;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">=</span><span style="color: #DD0000">&#8220;&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$p</span><span style="color: #007700">=</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if(</span><span style="color: #0000BB">$p</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">$find</span><span style="color: #007700">;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">.=</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">,</span><span style="color: #0000BB">$offset</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">.=</span><span style="color: #0000BB">$v</span><span style="color: #007700">;<br />&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$o</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;<br /></span><br /></span><br />
</code></p>
<p>取自&#8221;<a href="http://www.fallseir.com/wiki/PHP/MapKeys.html">http://www.fallseir.com/wiki/PHP/MapKeys.html</a>&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/05/mapkeys/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Win下出现apache无法启动的解决方式</title>
		<link>http://blog.fallseir.com/2008/05/apachestart/</link>
		<comments>http://blog.fallseir.com/2008/05/apachestart/#comments</comments>
		<pubDate>Tue, 06 May 2008 03:49:46 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[fallseir]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=88</guid>
		<description><![CDATA[Win下出现apache无法启动的解决方式
使用xampp时，时常会遇到apache启动不了的情况，而xampp的控制面板有没有什么像样的提示 只有一个&#8221;Busy&#8230;&#8221; 
但重启Win后，先启动apache就不会遇到问题。 
但是事情总是有原因的，决定去查下，也许是xampp给的提示不足，而不是apache的问题， 

> cmd
> d:\
> cd tools\xampp\apache\bin\ #我的apache安装位置
> httpd # apache的启动程序

(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : make_sock: c
ould not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
# 找到原因了 原来是我的80端口被占用了

> netstat -ano # 查看网络状态

  Proto  Local Address          Foreign Address   [...]]]></description>
			<content:encoded><![CDATA[<p>Win下出现apache无法启动的解决方式</p>
<p>使用xampp时，时常会遇到apache启动不了的情况，而xampp的控制面板有没有什么像样的提示 只有一个&#8221;Busy&#8230;&#8221; </p>
<p>但重启Win后，先启动apache就不会遇到问题。 </p>
<p>但是事情总是有原因的，决定去查下，也许是xampp给的提示不足，而不是apache的问题， </p>
<pre>
> cmd
> d:\
> cd tools\xampp\apache\bin\ #我的apache安装位置
> httpd # apache的启动程序

(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : make_sock: c
ould not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
# 找到原因了 原来是我的80端口被占用了

> netstat -ano # 查看网络状态

  Proto  Local Address          Foreign Address        State           PID
  TCP    127.0.0.1:80           127.0.0.1:1920         CLOSE_WAIT      1112
  TCP    127.0.0.1:80           127.0.0.1:2016         CLOSE_WAIT      1112
  ...
# 通过 Local Address 中端口为80的行 可以看到 我的80端口被PID为1112的进程占用了

任务管理器>进程 / 工具栏 > 查看 > 选择列 在“PID(进程ID)”项上打勾
在进程列表中 查找PID为1112的进程
# 我这里是该死的迅雷 ！！
# 当然之前我还遇到过QQ的时候
ok 杀掉这个进程 或者关掉罪魁，启动Apache 道路终于通畅了！^_～
</pre>
<p>取自&#8221;<a href="http://www.fallseir.com/wiki/Win%E4%B8%8B%E5%87%BA%E7%8E%B0apache%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E5%BC%8F.html">wiki:Win下出现apache无法启动的解决方式</a>&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/05/apachestart/feed/</wfw:commentRss>
		</item>
		<item>
		<title>尝试恢复因为重装了系统改变目录而导致不可用的xampp</title>
		<link>http://blog.fallseir.com/2008/04/xamppreinstall/</link>
		<comments>http://blog.fallseir.com/2008/04/xamppreinstall/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 05:52:47 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[笔记]]></category>

		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=87</guid>
		<description><![CDATA[尝试恢复因为重装了系统改变目录而导致不可用的xampp
出自Fallseir&#8217;s Wiki
尝试恢复因为重装了系统改变目录而导致不可用的xamppPHP
1、恢复mysql
    * 查看mysql的启动项 xampp\mysql_start.bat 
mysql\bin\mysqld &#8211;defaults-file=mysql\bin\my.cnf &#8211;standalone &#8211;console
    * 修改mysql的配置 mysql\bin\my.cnf 
更改其中的配置路径
 socket   = &#8220;C:/tools/develop/xampp/mysql/mysql.sock&#8221;
 socket   = &#8220;C:/tools/develop/xampp/mysql/mysql.sock&#8221;
 basedir  = &#8220;C:/tools/develop/xampp/mysql&#8221;
 tmpdir   = &#8220;C:/tools/develop/xampp/tmp&#8221;
 datadir  = &#8220;C:/tools/develop/xampp/mysql/data&#8221;

    * 打开xampp-control 开启mysql服务 ok！
2、 恢复apache
    * 修改apache的配置文件 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fallseir.com/wiki/%E5%B0%9D%E8%AF%95%E6%81%A2%E5%A4%8D%E5%9B%A0%E4%B8%BA%E9%87%8D%E8%A3%85%E4%BA%86%E7%B3%BB%E7%BB%9F%E6%94%B9%E5%8F%98%E7%9B%AE%E5%BD%95%E8%80%8C%E5%AF%BC%E8%87%B4%E4%B8%8D%E5%8F%AF%E7%94%A8%E7%9A%84xampp.html">尝试恢复因为重装了系统改变目录而导致不可用的xampp</a><br />
出自<a href="http://www.fallseir.com/wiki">Fallseir&#8217;s Wiki</a></p>
<p>尝试恢复因为重装了系统改变目录而导致不可用的xamppPHP</p>
<p>1、恢复mysql</p>
<p>    * 查看mysql的启动项 xampp\mysql_start.bat </p>
<blockquote><p>mysql\bin\mysqld &#8211;defaults-file=mysql\bin\my.cnf &#8211;standalone &#8211;console</p></blockquote>
<p>    * 修改mysql的配置 mysql\bin\my.cnf </p>
<blockquote><p>更改其中的配置路径<br />
 socket   = &#8220;C:/tools/develop/xampp/mysql/mysql.sock&#8221;<br />
 socket   = &#8220;C:/tools/develop/xampp/mysql/mysql.sock&#8221;<br />
 basedir  = &#8220;C:/tools/develop/xampp/mysql&#8221;<br />
 tmpdir   = &#8220;C:/tools/develop/xampp/tmp&#8221;<br />
 datadir  = &#8220;C:/tools/develop/xampp/mysql/data&#8221;
</p></blockquote>
<p>    * 打开xampp-control 开启mysql服务 ok！<br />
2、 恢复apache<br />
    * 修改apache的配置文件 xampp\apache\conf\httpd.conf </p>
<blockquote><p>更改其中的配置路径<br />
 ServerRoot &#8220;c:/tools/develop/xampp/apache&#8221;<br />
 DocumentRoot &#8220;c:/tools/develop/xampp/htdocs&#8221;<br />
 <Directory "c:/tools/develop/xampp/htdocs"><br />
 ScriptAlias /cgi-bin/ &#8220;C:/tools/develop/xampp/cgi-bin/&#8221;<br />
 <Directory "C:/tools/develop/xampp/cgi-bin">
</p></blockquote>
<p>    * 更改apache中的xampp的配置 </p>
<blockquote><p>xampp\apache\conf\extra\httpd-xampp.conf</p></blockquote>
<p>    * 更改自己的web站点配置 </p>
<blockquote><p>xampp\apache\conf\extra\httpd-vhost.conf</p></blockquote>
<p>    * 打开xampp-control 开启apache服务 ok！<br />
3、恢复php<br />
    * 修改php配置信息中的路径 </p>
<blockquote><p>xampp\apache\bin\php.ini</p></blockquote>
<p>    * 重启apache ok！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/04/xamppreinstall/feed/</wfw:commentRss>
		</item>
		<item>
		<title>升级到了wp2.5</title>
		<link>http://blog.fallseir.com/2008/04/update_wp2/</link>
		<comments>http://blog.fallseir.com/2008/04/update_wp2/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 08:36:16 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[随笔]]></category>

		<category><![CDATA[update]]></category>

		<category><![CDATA[测试TAG]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/?p=86</guid>
		<description><![CDATA[升级到了wp2.5
原来升级很简单 呵呵
1、覆盖原始文件
2、运行 http://example.com/wordpress/wp-admin/upgrade.php
一切ok！
当然如果你要升级 最好先备份数据库和原始文件
主要应该是后台更新了 界面更清爽了  其他的因为我不常用 所以没有留意什么是新的 哈
增加了TAG
underone 的 G7 v5 不错 赞！
]]></description>
			<content:encoded><![CDATA[<p>升级到了wp2.5<br />
原来升级很简单 呵呵<br />
1、覆盖原始文件<br />
2、运行 http://example.com/wordpress/wp-admin/upgrade.php<br />
一切ok！<br />
当然如果你要升级 最好先备份数据库和原始文件</p>
<p>主要应该是后台更新了 界面更清爽了  其他的因为我不常用 所以没有留意什么是新的 哈<br />
增加了TAG</p>
<p>underone 的 <a href="http://www.underone.com/2008/04/02/theme-g7v5-final/">G7 v5</a> 不错 赞！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/04/update_wp2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>在ActionScript 3 中动态加载一个类</title>
		<link>http://blog.fallseir.com/2008/02/as3_getdefinition/</link>
		<comments>http://blog.fallseir.com/2008/02/as3_getdefinition/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 06:30:12 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[笔记]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/2008/02/%e5%9c%a8actionscript-3-%e4%b8%ad%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd%e4%b8%80%e4%b8%aa%e7%b1%bb/</guid>
		<description><![CDATA[在ActionScript 3 中动态加载一个类
 &#8211;Script segment for UIComponent
找了好久的AS3中的反射，终于在这个 UIComponent 中找到了关键字：
反射、动态加载、getDefinitionByName、applicationDomain.getDefinition
关键点：
   1. skin is Class 类可以当作变量的值传递
   2. new skin() 变量可以用于new方法 用于构建变量的值的实例
   3. getDefinitionByName(skin.toString()) 可以通过类名获取类声明，也就是类变量
   4. loaderInfo.applicationDomain.getDefinition(skin.toString()) 应用程序域内声明的类不能通过普通的 getDefinitionByName 的方式获取，比如在swf中为miveclip声明的类 

/**
 * @private (protected)
 *
 * @langversion 3.0
 * @playerversion Flash 9.0.28.0
 */
protected function getDisplayObjectInstance(
  skin:Object):DisplayObject {
  var [...]]]></description>
			<content:encoded><![CDATA[<p>在ActionScript 3 中动态加载一个类<br />
 &#8211;<a href="http://www.fallseir.com/wiki/Script_segment_for_UIComponent.as.html">Script segment for UIComponent</a></p>
<p>找了好久的AS3中的反射，终于在这个 UIComponent 中找到了关键字：</p>
<p>反射、动态加载、getDefinitionByName、applicationDomain.getDefinition</p>
<p>关键点：</p>
<p>   1. skin is Class 类可以当作变量的值传递<br />
   2. new skin() 变量可以用于new方法 用于构建变量的值的实例<br />
   3. getDefinitionByName(skin.toString()) 可以通过类名获取类声明，也就是类变量<br />
   4. loaderInfo.applicationDomain.getDefinition(skin.toString()) 应用程序域内声明的类不能通过普通的 getDefinitionByName 的方式获取，比如在swf中为miveclip声明的类 </p>
<p><code><br />
/**<br />
 * @private (protected)<br />
 *<br />
 * @langversion 3.0<br />
 * @playerversion Flash 9.0.28.0<br />
 */<br />
protected function getDisplayObjectInstance(<br />
  skin:Object):DisplayObject {<br />
  var classDef:Object = null;<br />
  if (skin is Class) {<br />
    return (new skin()) as DisplayObject;<br />
  } else if (skin is DisplayObject) {<br />
    (skin as DisplayObject).x = 0;<br />
    (skin as DisplayObject).y = 0;<br />
    return skin as DisplayObject;<br />
  }<br />
  try {<br />
    classDef = getDefinitionByName(skin.toString());<br />
  } catch(e:Error) {<br />
    try {<br />
      classDef = loaderInfo.applicationDomain<br />
         .getDefinition(skin.toString()) as Object;<br />
    } catch (e:Error) {<br />
      // Nothing<br />
    }<br />
  }<br />
  if (classDef == null) {<br />
    return null;<br />
  }<br />
  return (new classDef()) as DisplayObject;<br />
}<br />
</code><br />
by fallseir http://fallseir.com fallseir[at]gmail[dot]com 20080226 转载请保留</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/02/as3_getdefinition/feed/</wfw:commentRss>
		</item>
		<item>
		<title>code:在php中捕获错误和异常</title>
		<link>http://blog.fallseir.com/2007/08/code%e5%9c%a8php%e4%b8%ad%e6%8d%95%e8%8e%b7%e9%94%99%e8%af%af%e5%92%8c%e5%bc%82%e5%b8%b8/</link>
		<comments>http://blog.fallseir.com/2007/08/code%e5%9c%a8php%e4%b8%ad%e6%8d%95%e8%8e%b7%e9%94%99%e8%af%af%e5%92%8c%e5%bc%82%e5%b8%b8/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 11:48:12 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
		
		<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/2007/08/code%e5%9c%a8php%e4%b8%ad%e6%8d%95%e8%8e%b7%e9%94%99%e8%af%af%e5%92%8c%e5%bc%82%e5%b8%b8/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><?php<br />
class Error_handler{<br />
    function Error_handler(){<br />
        $this->_init();<br />
    }<br />
    function _init(){<br />
        /**<br />
         * Sets error handler to be Prado::phpErrorHandler<br />
         */<br />
        set_error_handler(array($this,&#8217;handler_error&#8217;),error_reporting());<br />
        /**<br />
         * Sets exception handler to be Prado::exceptionHandler<br />
         */<br />
        set_exception_handler(array($this,&#8217;handler_exception&#8217;));<br />
    }<br />
    function handler_error($errno,$errstr,$errfile,$errline){<br />
        printf(&#8221;%s,%s,%s,%s\n&#8221;,$errno,$errstr,$errfile,$errline);<br />
    }<br />
    function handler_exception($exception){<br />
        print_r($exception);<br />
    }<br />
}<br />
$h=new Error_handler();<br />
$a=3/0;<br />
throw new Exception();<br />
?></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2007/08/code%e5%9c%a8php%e4%b8%ad%e6%8d%95%e8%8e%b7%e9%94%99%e8%af%af%e5%92%8c%e5%bc%82%e5%b8%b8/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
