当前位置:  编程技术>php
本页文章导读:
    ▪说明的比较细的php 正则学习实例       "^The": 匹配以 "The"开头的字符串;    "of despair$": 匹配以 "of despair" 结尾的字符串;    "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配;   "notice": 匹配包含n.........
    ▪MySql中正则表达式的使用方法描述       正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如,正则表达式hello只和字符串“hello”匹配。  一般的正则表达式使用了某些特殊的结构,所以它能匹配更.........
    ▪php自动跳转中英文页面       PHP代码: <? $lan = substr(?$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' content = '0;URL = gb/index.htm'>"); else print("<meta http-equiv='refresh' content = '0;URL = eng/index.htm.........

[1]说明的比较细的php 正则学习实例
    来源: 互联网  发布时间: 2013-11-30
"^The": 匹配以 "The"开头的字符串; 

  "of despair$": 匹配以 "of despair" 结尾的字符串; 

  "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配;

  "notice": 匹配包含notice的字符串;

  你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。

  这里还有几个字符 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:"zero or more", "one or more", and "zero or one." 这里是一些例子: 

  "ab*": 匹配字符串a和0个或者更多b组成的字符串("a", "ab", "abbb", etc.); 

  "ab+": 和上面一样,但最少有一个b ("ab", "abbb", etc.); 

  "ab?":匹配0个或者一个b; 

  "a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串. 

  你也可以在大括号里面限制字符出现的个数,比如 

  "ab{2}": 匹配一个a后面跟两个b(一个也不能少)("abb"); 

  "ab{2,}": 最少更两个b("abb", "abbbb", etc.); 

  "ab{3,5}": 2-5个b("abbb", "abbbb", or "abbbbb"). 

  你还要注意到你必须总是指定 (i.e, "{0,2}", not "{,2}").同样,你必须注意到, '*', '+', 和'?' 分别和一下三个范围标注是一样的,"{0,}", "{1,}", 和 "{0,1}"。 

  现在把一定数量的字符放到小括号里,比如: 

  "a(bc)*": 匹配 a 后面跟0个或者一个"bc"; 

  "a(bc){1,5}": 一个到5个 "bc." 

  还有一个字符 '│', 相当于OR 操作: 

  "hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串; 

  "(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串; 

  "(a│b)*c": 匹配含有这样 - 多个(包括0个)a或b,后面跟一个c的字符串 的字符串; 

  一个点('.')可以代表所有的 单一字符: 

  "a.[0-9]": 一个a跟一个字符再跟一个数字的 (含有这样一个字符串的字符串将被匹配,以后省略此括号) 

  "^.{3}$": 以三个字符结尾.中括号括住的内容只匹配一个 单一的字符 

  "[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样); 

  "[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 

  "^[a-zA-Z]": 匹配以字母开头的字符串 

  "[0-9]%": 匹配含有 形如 x% 的字符串 

  ",[a-zA-Z0-9]$": 匹配以逗号在加一个数字或字母结尾的字符串 

  你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 (i.e., "%[^a-zA-Z]%" 匹配含有 两个百分号里面有一个非字母 的字符串). 

  为了能够解释,但"^.[$()│*+?{\"作为有特殊意义的字符的时候,你必须在这些字符面前加'', 还有在php3中你应该避免在模式的最前面使用\, 比如说,正则表达式 "(\$│?[0-9]+" 应该这样调用 ereg("(\\$│?[0-9]+", $str) (不知道php4是不是一样) 

  不要忘记在中括号里面的字符是这条规路的例外—在中括号里面, 所有的特殊字符,包括(''), 都将失去他们的特殊性质(i.e., "[*\+?{}.]"匹配含有这些字符的字符串). 还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点(i.e. [a-d-0-9]中间的‘-'将有效. 

  为了完整, 我应该涉及到 collating sequences, character classes, 同埋 equivalence classes. 但我在这些方面不想讲的太详细, 这些在下面的文章仲都不需要涉及到. 你们可以在regex man pages 那里得到更多消息. 

  如何构建一个模式来匹配 货币数量 的输入 

  好了,现在我们要用我们所学的来干一些有用的事:构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式: "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and "10,000". 现在让我们开始构建这个匹配模式: 

  ^[1-9][0-9]*$ 

  这是所变量必须以非0的数字开头.但这也意味着 单一的 "0" 也不能通过测试. 以下是解决的方法: 

  ^(0│[1-9][0-9]*)$ 

  "只有0和不以0开头的数字与之匹配",我们也可以允许一个负号再数字之前: 

  ^(0│-?[1-9][0-9]*)$ 

  这就是: "0 或者 一个以0开头可能有一个负号在前面的数字." 好了, 好了现在让我们别那么严谨,允许以0开头.现在让我们放弃 负号 , 因为我们在表示钱币的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分: 

  ^[0-9]+(\.[0-9]+)?$ 

  这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意,在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. (你知道为什么吗) 

  ^[0-9]+(\.[0-9]{2})?$ 

  我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成: 

  ^[0-9]+(\.[0-9]{1,2})?$ 

  这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号(每隔三位), 我们可以这样表示: 

  ^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ 

  不要忘记加号 '+' 可以被乘号 '*' 替代如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 '\' 在php字符串中可能会出现错误 (很普遍的错误). 现在,我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(",", "", $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了. 

  构造检查email的正则表达式 

  让我们继续讨论怎么验证一个email地址. 在一个完整的email地址中有三个部分: POP3 用户名 (在 '@' 左边的一切), '@', 服务器名(就是剩下那部分). 用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and 下划线 ('_'). 服务器名字也是符合这个规则,当然下划线除外. 

  现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式: 

  ^[_a-zA-Z0-9-]+$ 

  现在还不能允许句号的存在. 我们把它加上: 

  ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ 

  上面的意思就是说: "以至少一个规范字符(除.意外)开头,后面跟着0个或者多个以点开始的字符串." 

  简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" – 只需要指定一个就可以了: 

  ^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ 

  后面的服务器名字也是一样,但要去掉下划线: 

  ^[a-z0-9-]+(\.[a-z0-9-]+)*$ 

  Done. 现在只需要用”@”把两部分连接: 

  ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ 

  这就是完整的email认证匹配模式了,只需要调用 

  eregi(‘^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ ',$eamil) 

  就可以得到是否为email了。

  正则表达式的其他用法 

  提取字符串 

  ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册). 比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: 

  ereg("([^\\/]*)$", $pathOrUrl, $regs); 
  echo $regs[1]; 

  高级的代换 

  ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号: 

  ereg_replace("[ \n\r\t]+", ",", trim($str));

    
[2]MySql中正则表达式的使用方法描述
    来源: 互联网  发布时间: 2013-11-30

正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如,正则表达式hello只和字符串“hello”匹配。 
一般的正则表达式使用了某些特殊的结构,所以它能匹配更多的字符串。例如,正则表达式hello|word既能匹配字符串“hello”也能匹配字符串 “word”。举一个更复杂一点的例子,正则表达式b[an]*s可以匹配字符串“bananas”、“baaaaas” 、“bs”以及其他任何以b开头以s结尾的字符串,中间可以包括任意个a和任意个n的组合。

一个正则表达式中的可以使用以下保留字 

所匹配的字符串以后面的字符串开头 
mysql> select "fonfo" regexp "^fo$"; -> 0(表示不匹配) 
mysql> select "fofo" regexp "^fo"; -> 1(表示匹配) 

所匹配的字符串以前面的字符串结尾 
mysql> select "fono" regexp "^fono$"; -> 1(表示匹配) 
mysql> select "fono" regexp "^fo$"; -> 0(表示不匹配) 

匹配任何字符(包括新行) 
mysql> select "fofo" regexp "^f.*"; -> 1(表示匹配) 
mysql> select "fonfo" regexp "^f.*"; -> 1(表示匹配) 
a* 
匹配任意多个a(包括空串) 
mysql> select "ban" regexp "^ba*n"; -> 1(表示匹配) 
mysql> select "baaan" regexp "^ba*n"; -> 1(表示匹配) 
mysql> select "bn" regexp "^ba*n"; -> 1(表示匹配) 
a+ 
匹配任意多个a(不包括空串) 
mysql> select "ban" regexp "^ba+n"; -> 1(表示匹配) 
mysql> select "bn" regexp "^ba+n"; -> 0(表示不匹配) 
a? 
匹配一个或零个a 
mysql> select "bn" regexp "^ba?n"; -> 1(表示匹配) 
mysql> select "ban" regexp "^ba?n"; -> 1(表示匹配) 
mysql> select "baan" regexp "^ba?n"; -> 0(表示不匹配) 
de|abc 
匹配de或abc 
mysql> select "pi" regexp "pi|apa"; -> 1(表示匹配) 
mysql> select "axe" regexp "pi|apa"; -> 0(表示不匹配) 
mysql> select "apa" regexp "pi|apa"; -> 1(表示匹配) 
mysql> select "apa" regexp "^(pi|apa)$"; -> 1(表示匹配) 
mysql> select "pi" regexp "^(pi|apa)$"; -> 1(表示匹配) 
mysql> select "pix" regexp "^(pi|apa)$"; -> 0(表示不匹配) 
(abc)* 
匹配任意多个abc(包括空串) 
mysql> select "pi" regexp "^(pi)*$"; -> 1(表示匹配) 
mysql> select "pip" regexp "^(pi)*$"; -> 0(表示不匹配) 
mysql> select "pipi" regexp "^(pi)*$"; -> 1(表示匹配) 
{1} 
{2,3} 
这是一个更全面的方法,它可以实现前面好几种保留字的功能 
a* 
可以写成a{0,} 
a+ 
可以写成a{1,} 
a? 
可以写成a{0,1} 
在{}内只有一个整型参数i,表示字符只能出现i次;在{}内有一个整型参数i,后面跟一个“,”,表示字符可以出现i次或i次以上;在{}内只有一个整型参数i,后面跟一个“,”,再跟一个整型参数j,表示字符只能出现i次以上,j次以下(包括i次和j次)。其中的整型参数必须大于等于0,小于等于 re_dup_max(默认是255)。如果有两个参数,第二个必须大于等于第一个 
[a-dx] 
匹配“a”、“b”、“c”、“d”或“x” 
[^a-dx] 
匹配除“a”、“b”、“c”、“d”、“x”以外的任何字符。“[”、“]”必须成对使用 
mysql> select "axbc" regexp "[a-dxyz]"; -> 1(表示匹配) 
mysql> select "axbc" regexp "^[a-dxyz]$"; -> 0(表示不匹配) 
mysql> select "axbc" regexp "^[a-dxyz]+$"; -> 1(表示匹配) 
mysql> select "axbc" regexp "^[^a-dxyz]+$"; -> 0(表示不匹配) 
mysql> select "gheis" regexp "^[^a-dxyz]+$"; -> 1(表示匹配) 
mysql> select "gheisa" regexp "^[^a-dxyz]+$"; -> 0(表示不匹配) 
------------------------------------------------------------ 
[[.characters.]] 
表示比较元素的顺序。在括号内的字符顺序是唯一的。但是括号中可以包含通配符, 所以他能匹配更多的字符。举例来说:正则表达式[[.ch.]]*c匹配chchcc的前五个字符。 
[=character_justalnums" regexp "[[:alnum:]]+"; -> 1(表示匹配) 
mysql> select "!!" regexp "[[:alnum:]]+"; -> 0(表示不匹配) 
[[::]] 
分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中的字符也不能是下划线。 
mysql> select "a word a" regexp "[[::]]"; -> 1(表示匹配) 
mysql> select "a xword a" regexp "[[::]]"; -> 0(表示不匹配) 
mysql> select "weeknights" regexp "^(wee|week)(knights|nights)$"; -> 1(表示匹配)

    
[3]php自动跳转中英文页面
    来源: 互联网  发布时间: 2013-11-30
PHP代码:
<?
$lan = substr(?$HTTP_ACCEPT_LANGUAGE,0,5);
if ($lan == "zh-cn")
print("<meta http-equiv='refresh' content = '0;URL = gb/index.htm'>");
else
print("<meta http-equiv='refresh' content = '0;URL = eng/index.htm'>");
?>

HTML网页根据来访这的浏览器语言不同自动跳转多语言页面

在 <head> </head> 之间加入如下代码。

<script> 
var type=navigator.appName 
if (type=="Netscape") 
var lang = navigator.language 
else 
var lang = navigator.userLanguage

//cut down to first 2 chars of country code 
var lang = lang.substr(0,2)

// 英语
if (lang == "en") 
window.location.replace('url')

// 简体中文
else if (lang == "zh-cn") 
window.location.replace('url')

// 繁体中文
else if (lang == "zh-tw") 
window.location.replace('url')

// 德语
else if (lang == "de") 
window.location.replace('url')

// 除上面所列的语言
else 
window.location.replace('url')

</script>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3