Eric @ EricBess WebHome

胜不骄,败不馁,胸有激雷而面如平湖

Chinese (Simplified) flagItalian flagKorean flagPortuguese flagEnglish flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flagCroat flagDanish flagFinnish flagHindi flagPolish flagRumanian flagSwedish flagNorwegian flagCatalan flagFilipino flagHebrew flagIndonesian flagLatvian flagLithuanian flagSerbian flagSlovak flagSlovenian flagUkrainian flagVietnamese flag
By N2H

FindRelativePath Function[找出路径间相对关系]

PHP FUNCTION:Found the relative between the path.
PHP函数:找出路径间相对关系。

Example:

1
2
3
4
5
6
7
8
9
< ?php
$path_a = 'http://www.php.net/manual/en/install.php';
$path_b = 'http://www.php.net/downloads';
 
echo "\nPath A:  " . $path_a;
echo "\nPath B:  " . $path_b;
echo "\nA to B:  " . findRelativePath($path_a, $path_b); //  ../../downloads/
echo "\nB to A:  " . findRelativePath($path_b, $path_a); //  ../manual/en/install.php
?>

Function:

Click to continue reading

07月 17th, 2008 Posted by eric | Coding | 2 comments

[转]深入浅出之正则表达式

前言:

半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。这个愿望直到这个五一长假才得以实现,结果就有了这篇文章。关于本文的名字,使用“深入浅出”似乎已经太俗。但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给我的感受,所以也就不能免俗了。

本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!

什么是正则表达式

基本说来,正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。本文将用<<regex>>来表示一段具体的正则表达式。一段文本就是最基本的模式,简单的匹配相同的文本。

不同的正则表达式引擎

正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的应用程序的一部分。在软件世界,不同的正则表达式并不互相兼容。本教程会集中讨论Perl 5 类型的引擎,因为这种引擎是应用最广泛的引擎。同时我们也会提到一些和其他引擎的区别。许多近代的引擎都很类似,但不完全一样。例如.NET正则库,JDK正则包。

文字符号

最基本的正则表达式由单个文字符号组成。如<<a>>,它将匹配字符串中第一次出现的字符“a”。如对字符串“Jack is a boy”。“J”后的“a”将被匹配。而第二个“a”将不会被匹配。正则表达式也可以匹配第二个“a”,这必须是你告诉正则表达式引擎从第一次匹配的地方开始搜索。在文本编辑器中,你可以使用“查找下一个”。在编程语言中,会有一个函数可以使你从前一次匹配的位置开始继续向后搜索。

类似的,<<cat>>会匹配“About cats and dogs”中的“cat”。这等于是告诉正则表达式引擎,找到一个<<c>>,紧跟一个<<a>>,再跟一个<<t>>。

要注意,正则表达式引擎缺省是大小写敏感的。除非你告诉引擎忽略大小写,否则<<cat>>不会匹配“Cat”。

特殊字符

对于文字字符,有11个字符被保留作特殊用途。他们是:[ ] \ ^ $ . | ? * + ( )

这些特殊字符也被称作元字符。

如果你想在正则表达式中将这些字符用作文本字符,你需要用反斜杠“\”对其进行换码 (escape)。例如你想匹配“1+1=2”,正确的表达式为<<1\+1=2>>.

需要注意的是,<<1+1=2>>也是有效的正则表达式。但它不会匹配“1+1=2”,而会匹配“123+111=234”中的“111=2”。因为“+”在这里表示特殊含义(重复1次到多次)。

在编程语言中,要注意,一些特殊的字符会先被编译器处理,然后再传递给正则引擎。因此正则表达式<<1\+2=2>>在C++中要写成“1\\+1=2”。为了匹配“C:\temp”,你要用正则表达式<<C:\\temp>>。而在C++中,正则表达式则变成了“C:\\\\temp”。

Click to continue reading

07月 15th, 2008 Posted by eric | Coding | no comments

PHP字符串操作入门

无论哪种语言,字符串操作都是一个重要的基础,往往是简单而重要。正像人说话一样,一般有形体(图形界面),有语言(print 字符串?),显然字符串能解释更多的东西。PHP提供了大量的字符串操作函数,功能强大,使用也比较简单,详细请参看 http://cn2.php.net/manual/zh/ref.strings.php . 以下将简单的讲述它的功能和特性。

弱类型

PHP是弱类型语言,所以其它类型的数据一般可以直接应用于字符串操作函数里,而自动转换成字符串类型,进行处理,如:

echo substr("1234567"13); 

echo substr(123456,13); 

是一样的

定义

一般用双引号或单引号标识一个字符串。比如

$str "i love u"
$str 'i love u'

它者两者是有一些区别的。后者将一切单引号的内容都会当作字符处理;前者则不然。比如

$test "iwind"
$str "i love $test"
$str1 'i love $test'
echo 
$str//将得到 i love iwind 
echo $str1//将得到 i love $test 

同样的以下两个例子的行为也不一样的:

echo "i love \test"// 将得到 i love est,已经将\t视为转义 
echo 'i love \test'// 将得到 i love \test 

从而可以简单认为双引号里的内容是经过“解释”过的,单引号的是“所见即所得”的。显而易见,双引号形式的更为灵活一些,当然单引号会适用于一些特殊的场合,这里就不作阐述了。

1 2 3 4 5 6 7 8 9

07月 10th, 2008 Posted by eric | Coding, 未分类 | one comment

中金岭南需提高报价收购HER[分析]

中金岭南今日收购HER要约终止日,很多中金岭南股民在抱怨信息不公开。其实澳大利亚ASX市场是个信息很公开的市场。被收购方HER每天都在向市场发布最新收购消息,且信息都为公司一手文件的传真件,消息的准确与公开性都是国内股市不可比拟的。我们可以随便在一个AU财金网站上得到,如:http://markets.smh.com.au/apps/qt/quote.ac?section=ca&code=HER。

从公开信息分析,除非提高报价,中金岭南收购HER将不会成功。理由如下。
1. 60%HER股民不满2.8$报价,这从今天市价2.9$,与Calipso提高报价到2.85$后只有增加0.1%不到股民接受要约看出。
2. 有两家已提高报价至2.85$,其中包括Calipso。
3. 在同等条件下澳洲普通股民更愿意把股权卖给澳洲公司。大家要注意到Tango与Calipso同时提出2.8$收购要约时两家都获得19%多的股权支持,但Tangou的主要支持方为公司管理层,Calipso为普通股民。管理层知道Tango是唯一最终收购方,为保持与以后的大股东关系,管理层做出了正确的选择。但其他普通股民明显和Calipso一样想从中获得额外的利润,不愿过早释出手中筹码。

中金岭南要获得HER可能要提高血本来填补澳洲市场的胃口。
让我拭目以待吧!

07月 8th, 2008 Posted by eric | 我的股市预判, 财金与投资 | no comments

PHP的debug技术

给程序加上debug函数,来记录其他代码的结果, DEBUG为开关。 代码来源:wp-global-translator-plugin。

?Download degug.php
1
2
3
4
5
6
7
8
9
10
11
function debug($msg)
{
  if (DEBUG) {
    $today = date("Y-m-d H:i:s ");
    $myFile = dirname(__file__) . "/debug.log";
    $fh = fopen($myFile, 'a') or die("Can't open debug file. Please manually create the 'debug.log' file (inside the 'global-translator' directory) and make it writable.");
    $ua_simple = preg_replace("/(.*)\s\(.*/","\\1",$_SERVER['HTTP_USER_AGENT']);
    fwrite($fh, $today . " [from: ".$_SERVER['REMOTE_ADDR']."|$ua_simple] - " . $msg . "\n");
    fclose($fh);
  }
}

在程序的其他部分,需要时加上debug("")记录结果,如下面求当前URI的散列表现:$hash。

1
2
3
4
5
6
7
8
9
10
11
function gltr_get_page_content($lang, $url)
{
  $page = '';
  if (USE_CACHE) {
    $refresh = CACHE_TIMEOUT;
 
    $req = preg_replace('/(.*)\/$/', '\\1', $_SERVER['REQUEST_URI']);
    $req = preg_replace('/#.*$/', '', $req);
    $hash = str_replace(array('?','< ','>',':','\\','/','*','|','"'), '_', $req);
    debug("Hashing uri: $req to: $hash");
    .......

07月 7th, 2008 Posted by eric | Coding | no comments

Rewrite Permalinks in plugin development.

We add a rewrite rule that tells WordPress to interpret /geostate/oregon URLs the same as ?geostate=oregon.
there are two steps:

(1) "flush" the cached rewrite rules using an init filter, to force WordPress to recalculate the rewrite rules,
add_action('init', 'geotags_flush_rewrite_rules');

function geotags_flush_rewrite_rules()
{
   global $wp_rewrite;
   $wp_rewrite->flush_rules();
}
(2) use the generate_rewrite_rules action to add a new rule when they are calculated. Here's the "flush" code:
add_action('generate_rewrite_rules', 'geotags_add_rewrite_rules');

function geotags_add_rewrite_rules( $wp_rewrite )
{
  $new_rules = array(
     'geostate/(.+)' => 'index.php?geostate=' .
       $wp_rewrite->preg_index(1) );

  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

07月 7th, 2008 Posted by eric | Wordpress Programming, 未分类 | no comments

Page 4 of 29«12345678910»...Last »