叁柒設計 三七设计 Three seven design 我的学习与分享
详细信息
来自:关键字:

PHP4手册:函数库及函数(四十三) 常规表示法函式库

  December 21th,2008 22:39:58   Category : PHP+Mysql
 Click (479)

--------------------------------------------------------------------------------
 常规表示法函式库 
--------------------------------------------------------------------------------
 


本函式库共有 6 个函式
关于常规表示法 (Regular expression),似乎译成:字串剖析处理,较合乎字面上的意义。但目前所有的相关书籍都译成常规表示法或是正规表示法....等等,实际上是负责字串剖析比对,并对字串做相关的处理。 
本函式库让 PHP 也能处理复杂的字串操作。它采用了 POSIX 1003.2 的扩充常规处理 (regular expression) 的标准。更多关于常规表示法的资讯可以参考 UNIX Shell、Perl 或是 awk 等相关的书籍。网路上也有张耀仁先生所作的正规表示式的入门与应用文章。 
 


ereg: 字串比对剖析。 
ereg_replace: 字串比对剖析并取代。 
eregi: 字串比对剖析,与大小写无关。 
eregi_replace: 字串比对剖析并取代,与大小写无关。 
split: 将字串依指定的规则切开。 
sql_regcase: 将字串逐字传回大小写字元。 

--------------------------------------------------------------------------------
 函式:ereg() 
--------------------------------------------------------------------------------
 


常规表示法函式库


ereg
字串比对剖析。

语法: int ereg(string pattern, string string, array [regs]);

传回值: 整数/阵列

函式种类: 资料处理


 
 
内容说明 


本函式以 pattern 的规则来剖析比对字串 string。比对结果传回的值放在阵列参数 regs 之中,regs[0] 内容就是原字串 string、regs[1] 为第一个合乎规则的字串、regs[2] 就是第二个合乎规则的字串,余类推。若省略参数 regs,则只是单纯地比对,找到则传回值为 true。


 
 
使用范例 


这个例子是 markus@dnet.it 在 14-Jun-1999 所提出的,可对使用者输入的 E-Mail 作简单的检查,检查使用者的 E-Mail 字串是否有 @ 字元,在 @ 字元前有英文字母或数字,在之后有数节字串,最后的小数点后只能有二个或三个英文字母。super@mail.wilson.gs 就可以通过检查,super@mail.wilson 就不能通过检查。

if (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
  echo "您的 E-Mail 通过初步检查";
}
?> 

 
 
参考 


ereg_replace()  eregi()  eregi_replace()  


--------------------------------------------------------------------------------
 函式:ereg_replace() 
--------------------------------------------------------------------------------
 


常规表示法函式库


ereg_replace
字串比对剖析并取代。

语法: string ereg_replace(string pattern, string replacement, string string);

传回值: 字串

函式种类: 资料处理


 
 
内容说明 


本函式以 pattern 的规则来剖析比对字串 string,欲取而代之的字串为参数 replacement。传回值为字串型态,为取代后的字串结果。


 
 
使用范例 


ken@freebsdrocks.com 在 16-Mar-1999 提出的例子。

$text = 'This is a {1} day, not {2} and {3}.';
$daytype = array( 1 => 'fine',
                  2 => 'overcast',
                  3 => 'rainy' );
while (ereg ('{([0-9]+)}', $text, $regs)) {
  $found = $regs[1];
  $text = ereg_replace("\{".$found."\}", $daytype[$found], $text);
}
echo "$text\n";
// This is a fine day, not overcast and rainy. 
?>

ken@freebsdrocks.com 并同时提出具有相同功能的perl 程式范例如下:

$text = 'This is a {1} day, not {2} and {3}.';
%daytype = ( 1 => 'fine',
             2 => 'overcast',
             3 => 'rainy' );
$text =~ s/{(\d+)}/$daytype{$1}/eg;
print "$text\n"; 

 
 
参考 


ereg()  eregi()  eregi_replace()  


--------------------------------------------------------------------------------
 函式:eregi() 
--------------------------------------------------------------------------------
 


常规表示法函式库


eregi
字串比对剖析,与大小写无关。

语法: int eregi(string pattern, string string, array [regs]);

传回值: 整数/阵列

函式种类: 资料处理


 
 
内容说明 


本函式和 ereg() 类似,用法也相同。不同之处在于 ereg() 有区分大小写,本函式与大小写无关。


 
 
参考 


ereg()  ereg_replace()  eregi_replace()  

 

--------------------------------------------------------------------------------
 函式:eregi_replace() 
--------------------------------------------------------------------------------
 


常规表示法函式库


eregi_replace
字串比对剖析并取代,与大小写无关。

语法: string eregi_replace(string pattern, string replacement, string string);

传回值: 字串

函式种类: 资料处理


 
 
内容说明 


本函式和 ereg_replace() 类似,用法也相同。不同之处在于 ereg_replace() 有区分大小写,本函式与大小写无关。


 
 
参考 


ereg()  ereg_replace()  eregi()  

 

--------------------------------------------------------------------------------
 函式:split() 
--------------------------------------------------------------------------------
 


常规表示法函式库


split
将字串依指定的规则切开。

语法: array split(string pattern, string string, int [limit]);

传回值: 阵列

函式种类: 资料处理


 
 
内容说明 


本函式可将字串依指定的规则分开。切开后的传回值为阵列变数。参数 pattern 为指定的规则字串、参数 string 则为待处理的字串、参数 limit 可省略,表示欲处理的最多合乎值。值得注意的是本函式的 pattern 参数有区分大小写。


 
 
参考 


explode()  implode()  

 

--------------------------------------------------------------------------------
 函式:sql_regcase() 
--------------------------------------------------------------------------------
 


常规表示法函式库


sql_regcase
将字串逐字传回大小写字元。

语法: string sql_regcase(string string);

传回值: 阵列

函式种类: 资料处理


 
 
内容说明 


本函式可将字串之字元逐字传回大小写。在 PHP 使用上,本函式没有什么作用,但可能可以提供外部程式或资料库处理。


 
 
使用范例 


例中的传回字串为 [Ww][Ii][Ll][Ss][Oo][Nn]

print(sql_regcase("wilson"));
?> 

[ 资讯评论 ]
暂时没有任何评论!
[ 提交评论 ]
请选择表情
  • 昵称:
  • *
  • 验证码:
  • *点击更换验证码
  • 尚能输入个字符
申明:本网站部分分享内容来自网络,如有侵权请及时与我联系,谢谢,另网友评论仅代表个人观点,与本站立场无关,如果在评论中发表违反我国任何法律的,请即时与我们联系(QQ:77132915),我们将立即予以删除. [ 注:提交评论后,通过审核后方能在网站上显示!]