Archive for ‘ 2005 ’
[PHP]如何得知输入的字串是否为 UTF-8 编码
使用下列函数,如果传回值为 true,表示输入的字串为 UTF-8 编码:
// Returns true if $string is valid UTF-8 and false otherwise. function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $string); }
参考网页
- 如何得知输入的字串是否为 UTF-8 编码 (Perl)
- W3C I18N FAQ:Multilingual Forms
- PHP:md_detect_encoding
- PHP:Multibyte String Functions
[Perl]如何得知输入的字串是否为 UTF-8 编码
使用下列函数,如果传回值为 1,表示输入的字串为 UTF-8 编码:
#Returns 1 if $text is valid UTF-8 and 0 otherwise. sub is_utf8 { my $text = shift; if( $text =~ m/^( [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$/x ){ return 1; } else{ return 0; } } #sub is_utf8
参考网页
[Perl]Big5/UTF-8 编码转换的模组
Big5 及 UTF-8 编码的转换方式有两种 (请先安装 Encode::compat 模组):
方式一
use Encode::compat; use Encode qw(from_to); my $string = "中文"; #Big5 转 UTF-8 from_to($string, 'big5', 'utf8'); print "$string\n"; #UTF-8 转 Big5 from_to($string, 'utf8', 'big5'); print "$string\n";
[转载][PHP]使用 PHP v4.2.0 及以后版本的注意事项
转载自: 中文 PHP 资讯站
从PHP 4.2.0版本开始中, PHP 指令 register_globals 的默认值为 off(在php.ini配置文件里). 这是 PHP 的一个主要变化。register_globals是干什么用的呢?它是PHP用来控制是否将EGPCS (Environment, GET, POST, Cookie, Server)变量是否注册为总体变量的。
例如,对于 http://www.xx.php?var=2 这里的var,在为 on 时,你只需用 $var 即可,但在 off 时,就必须用 $_GET["var"] 来接收了~ 这里的 $_GET 就是一个PHP超总体变量阵列。和它性质一样的还有:
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
[转载][PHP][MySQL]PHP 和 MySQL 开发的 8 个技巧
转载自: 中文 PHP 资讯站
LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。本文的原文当然也来自:
看了以后,颇有启发,以前开发中遇到的一些问题,迎刃而解。所以翻译出来和大家共用。
[转载][PHP]PHP 使用无限生命期 Session 的方法
转载自: 中文 PHP 资讯站
在PHP4.0中加入了对Session的支援,方便了我们很多程式,比如购物车等等。
在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Session的变量了!那么怎么样可以实现Session的永久生命期呢?
大家知道,Session储存在服务器端,根据用户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可 以使用用户端的Cookie或者Http1.1协定的Query_String(就是访问的URL的"?"后面的部分)来传送给服务器,然后服务器读取 Session的目录……
PieTTY 0.3.5 - 实用的 Telnet/SSH 终端机连线程式
档案下载
- 名 称: PieTTY
- 版 本: 0.3.27
- 档案大小: 316 KB
- 语言接口: 中英文版
- 版本性质: Freeware
- 释出日期: 2005/06/14
- 作业平台: Windows NT/2000/XP
- 原创网站: PieTTY
- 档案下载:
平常我都是用 SecureNetTerm,今天试用 PieTTY,发现这也是一支好用的 Telnet/SSH 终端机连线程式。PieTTY 修改自 Putty 0.57,对“亚洲语系”的相容性更高,用起来更方便、顺手。
PieTTY 的特点
- 半透明显示方式增为三种绘制方式以配合各种硬件。
- 内建 Big5-2003+中国海字集,免装“Unicode 补完”!
- 内建简易中文简繁转换(使用 autrijus 的表格) 。
- 使用界面大幅加强:无框视窗模式、记住最后视窗位置…
- 全新的视觉效果:视窗阴影!
- 可设为系统 telnet:// 处理程式
- 加强显示非系统默认的语系,如在英文版Windows上设英文字型并同时显示中文与韩文。
- 加强剪贴方式方便性,BBS 与 IRC 互贴彩色不是梦!
- 彻底解决之前各版点选网址的相关问题。
PieTTY 的缺点
- 没有站台管理。
WikkaWiki 1.1.60 繁体中文版下载
档案下载
- 名 称: WikkaWiki
- 版 本: 1.1.60(20050214)
- 档案大小: 612.62 KB
- 语言接口: 中文版
- 版本性质: Freeware
- 释出日期: 2005/02/14
- 作业平台: Linux
- 原创网站: Wikka Wakka Wiki
- 档案下载: 主程式(1160-20050214)
用 Wiki 来编写文件实在是一种很好的模式,拿 Wiki 来当 "共同创作" 、 "知识管理" 或 "文件管理" 也都是很好的应用。网络上的 Wiki 套件有很多,但应该都还有很大的成长空间,也因为一直找不到心目中理想的 Wiki,所以就自己动手修改了 WikkaWiki。
Read more
实用的 screen 终端机管理程式
screen 是一个很方便的终端机管理程式,可以让你在同一个终端机开启多个 Session 来操作,加强多工的处理。即使你要离开电脑,也可以将 Session 执行脱离,或直接关闭终端机,这时执行中的程式还是会继续执行,下次登入终端机时再取回 Session 来操作即可。
首先执行 Screen 程式,开始一个 Session:
$ screen
某些终端机视窗会在标题列显示目前在操作的终端机编号,如果没有显示,你也可以输入:
$ tty
来了解你目前正在哪个终端机中。
以快速键操作
切换时的快速键一开始都是 Ctrl + A
- 新增 Session:
Ctrl + A → Ctrl + C - 切换到上一个编号的 Session:
Ctrl + A → Ctrl + P - 切换到下一个编号的 Session:
Ctrl + A → Ctrl + N - 切换到指定编号的 Session:
Ctrl + A → 数字键 - 切换到下一个编号的 Session:
Ctrl + A → Space - 在两个 Session 之间互相切换:
Ctrl + A → Ctrl + A - 锁定 Session:
Ctrl + A → Ctrl + X - 显示 Session 列表,可供你选取:
Ctrl + A → ⇧Shift + " - 新视窗的标题列显示所有的 Session 编号 (其中有加上 * 表示是目前使用的 Session) :
Ctrl + A → Ctrl + W - 水平分割视窗 (可以持续分割) :
Ctrl + A → ⇧Shift + S - 垂直分割视窗 (可以持续分割,只有特定版本才支援,请参考后方的说明) :
Ctrl + A → ⇧Shift + | - 在分割的视窗做切换:
Ctrl + A → Tab - 关闭分割的视窗:
Ctrl + A → ⇧Shift + Q - 将所有的 Session 脱离(Detach),并回到执行 screen 前的状态:
Ctrl + A → Ctrl + D
在这种状态下,用户可以不须理会这些 Session。不管用户离线或是要从别的地方登入,只要下次登入时执行:screen -r
将所有 Session 叫回来继续操作。
- 重新命名 Session:
Ctrl + A → ⇧Shift + A - 显示日期、主机名称及负载:
Ctrl + A → Ctrl + T - 将画面暂停 (程式仍继续执行):
Ctrl + A → Ctrl + S - 将暂停的画面恢复:
Ctrl + A → Ctrl + Q
screen 的相关指令
- 启动 Screen 程式,开始一个 Session:
$ screen
或指定 Id
$ screen -S SessionId
- 查看同一帐号共开启过多少个 Session 及其 Id:
$ screen -ls
- 取回被脱离执行的 Session:
$ screen -r
或
$ screen -r SessionId
- 将其它的 Session 强制脱离:
$ screen -d
或
$ screen -d SessionId
这功能适用于原本操作的电脑当机或断线了,让你可以在下次取回还在主机中执行的 Session。
- 同步操作终端机 Session (两边必须登入相同的帐号):
$ screen -x
或
$ screen -x SessionId
- 移除 Session:
$ screen -wipe SessionId
模拟页签显示
如果要在画面底部秀出现在在哪个编号的 Session,请编辑 /etc/screenrc 或 ~/.screenrc,加入:
hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w%<"
同步作业说明
假设我在我目前所操作的终端机 Session 要分享给另一端的登入者查看,并且可以操作 (或者是我不想将远端登入的用户脱离 Session),则我要先以我的帐号登入主机并且执行 screen -S 特定名称,然后另一端的登入者:
- 以相同的帐号登入主机
- 以 screen -ls 查看要取回的终端机 Session
- 以 screen -x 特定名称 或 screen -x SessionId 进入相同的终端机 Session
垂直分割视窗
因为 screen 只能水平分割视窗,不能充分利用宽萤幕的特性实在有点可惜! 这里有新版可垂直分割功能的 screen:
请自行编译安装。
命令别名
因为 screen 很实用,于是我在 bashrc 建立两个 screen 指令的别名:
alias scr='screen -d -r Normal || screen -S Normal' alias scl='screen -ls'
我只要登入终端机就先打一次 scr,以取回上一次没关闭的 Session。如果没有上一次没关闭的 Session,则会建立一个新的 Session。
scl 则可以列出目前有几个属于我的 session。
参考网页
INFORMATION
我们解决了什么问题?我们创造了什么价值?
近期回响