=波波日志 > PHP/apache/Perl > php学习--字符串函数=
[转]php学习--字符串函数
nltobr($str):将字符串中的\r或者\n转换为<br>
//下面4个函数对字母来说,中文无效
Strtoupper():转换为大写
strtolower();转换为小写
ucfirst();将第一个字符转换为大写
ucword():将每个单词的第一个字母转换为大写
字符串连接和分割
explode:分割
implode和join:连接
检查字符串是否为空
isset():检查变量是否存在,如果存在返回true,否则false
empty():检查变量是否存在及是否为空,如果变量不存在或者内容为0或者空返回true,否则false
substr(string str,int start[,int length]):返回字符串的子拷贝
start:为正数,则从这个字符到指定长度或者到结尾【从0开始计算】;为负数【从1开始计算】,则从尾部start个字符开始到指定长度或者结尾
length:返回指定个数(为正数),或者字符串的尾部(负数【不包含在此位置上的字符】)
EG
$str="abcdefg";
echo substr($str,2);//输出cdefg
echo substr($str,-2);//输出fg
echo substr($str,2,-1);//输出cdef
echo substr($str,-2,-1);//输出f
字符串比较
strcmp:区分大小写
strcasecmp:不区分大小写
strnatcmp:把字符串中存在的数字按数字来比较,例如使用上面两个函数时,'2'大于'12',但是使用这个函数时,'12'大于'2'
strnatcasecmp:strnatcmp不区分大小写的比较
strlen():返回字符串长度
匹配或者替换子字符串
strstr(string haystack,string needle):如果needle在haystatck中出现,则返回从needle开始[包含needle]到结尾的haystack的字符串。如果有多个needle在haystack中,则从第一个needle处返回
stristr和strstr基本一致,只是stristr不区分大小写
strrchr(string haystack,string needle):和strstr意思差不多,只是是从needle最后出现在haystack的位置前开始返回。而且要注意其实是查找needle的第一个字符,而不是整个needle
EG
$str="abdcdefg";
echo strrchr($str,"de")."<br>";//输出defg
echo strrchr($str,"dc")."<br>";//输出defg,并不是dcdefg
查找子字符串的位置【asp函数为instr(搜索字符串,要搜索的字符串) ==》找到返回“要搜索的字符串”的位置,否则返回0,注意和php不一样,返回的是false asp.net返回的是-1】
strpos(string haystack,string needle[,int offset]):意识和strstr差不多,只是这个函数返回位置,而不是字符串。多了一个参数offset,可以从指定的位置开始
stripos:和strpos一样,只是不区分大小写 strrpos(string haystack,string needle[,int offset]):和strrchr一样,注意也是搜索needle中的第一个字符。多了一个参数offset,可以从指定的位置开始
替换子字符串
str_replace(string needle,string new_needle,string haystack[,int &count]);使用new_needle替换haystack中的needle,count是替换的次数【注意和asp中的replace参数的位置不一样】
substr_replace(string string,string replacement,int start[,int length]):在给定位置中查找和替换特定的子串,具体是哪一部分取决于起始位置和可选参数length
start:正数则从开始计算偏移量;负数,从末尾开始计算
length:未指定则一直到结束。如果为0,则是插入字符串。正,表示替换掉的从start开始的字符串的长度。负,表示从字符串尾部开始到第length个字符停止替换
perl正则介绍
preg_match(string pattern,string str):用模式pattern匹配str
pattern:必须括在一个定界符号中,习惯上用”/“字符,例如/pattern/,除了”\“以外的任何非字母数字字符都可以座位定界符号。如#pattern#等价于/pattern/
字符类 意义 扩展
\s 空白符号 [\r\n \t]//注意有个空白符号
\S 非空白符号 [^\r\n \t]
\w 单词(标识符)字符 [0-9A-Za-z]
\W 非单词(标识符)字符 [^0-9A-Za-z]
\d 数组 [0-9]
\D 非数字 [^0-9]
锚
断言 意义
\b 单词边界
\B 非单词边界
\A 字符串的开始
\Z 字符串的末尾或在结尾的\n前
\z 字符串的末尾
^ 行的开始(如果/m标志被启用则在\n之后)
$ 行的末尾(如果/m标志被启用则在\n之前)
贪心量词和非贪心量词(?使用)
贪心 非贪心
? ??
* *?
+ +?
{m} {m}?
{m,} {m,}?
{m,n} {m,n}?
(?:)非捕获组
\数字 ==》后引用,查阅模式中先前匹配的文本:\1查阅第一个子模式匹配的内容,\2查阅第二个,依次类推。如果嵌套子模式,nemesis第一个由第一个左小括号开始,第二个由第二个左小括号开始,依次类推。
跟踪选项
修饰符 意义
/regexp/i 不区区分大小写的匹配
/regexp/s 使句点(.)匹配任何字符,包括换行符(\n)
/regexp/x 从模式中删除空白和注释
/regexp/m 使^匹配内部换行符\n后面的内容,使$匹配内部换行符\n前面的内容
/regexp/e 如果替换字符串是php代码,则对它进行evel()操作来得到实际的替换字符串
---------------------------------------其他标志
/regexp/U 翻转子模式的贪心性;*和+以尽可能少的匹配替代尽可能多的匹配
/regexp/u 是模式字符串被当作utf-8对待
/regexp/X 使反斜杠后跟一个字符没有发出错误的特殊意义
/regexp/A 使字符串的开始被锚定,就像一个模式的第一个字符是^
/regexp/D 使$字符仅仅在一行的末尾匹配
/regexp/S 使表达式解析器耕细致地检查模式的结构,使得它将在下次运行时(如在循环中)稍微快一些
内部选项
(?flags:subpattern):除了在结束模式定界符后指定模式选项外,还可以在一个模式内部指定应用于该模式的一部分的选项。如preg_match('/I like(?i:PHP)/','I like pHp');只有单词php是不区分大小写的,这次匹配返回true.
i,m,s,U,x和X可以应用于这个内部选项【可以使用多个选项】,但是可以使用“-”号来关闭结束模式中指定的选项
eg.
preg_match('/(?-i:I like) PHP/i','I like pHp'); //返回true,I like区分大小写
preg_match('/(?-i:I like) PHP/i','i like pHp'); //返回false
前瞻和后顾【()中的值不包含在组中】
结构 意义
(?=subpattern) 正前瞻
(?!subpattern) 负前瞻
(?<=subpattern) 正后顾
(?<!subpattern) 负后顾
EG.
$str="abc#abc$abc";
//"/(abc(?=\$))/" =>这个匹配 abc$,但是不匹配abc#,组1内容为abc,不包含$
//"/(abc(?!\$))/" =>这个匹配 abc#,但是不匹配abc$,组1内容为abc,不包含#
//"/((?<=#)abc))/" =>这个匹配 #abc,但是不匹配$abc,组1内容为abc,不包含#
//"/((?<!#)abc))/" =>这个匹配 $abc,但是不匹配#abc,组1内容为abc,不包含$
剪切:对一些模式表达式引擎来预防坏的行为,一旦匹配,就不返回
(?>subpattern)来标记
条件表达式
(?(condition)yespattern)
(?(condition)yespattern|nopattern)
如果断言成立,那么正则表达式引擎匹配yespattern。对于第二种,如果不成立,则跳过yespattern,执行nopattern。
condition可以是两种类型中的一种:后引用或者前瞻和后顾匹配。
函数匹配
$found=preg_match(patern,string[,captured]);
$found=preg_match_all(pattern,string,matches[,order]);
order:PERG_PATTERN_ORDER/PREG_SET_ORDER决定matches的布局。
EG.
使用PREG_PATTERN_ORDER(默认),则每个数组原属对应于一个特定的捕获子模式,所以$m1[0]是所有与模式匹配的子字符串的数组,$m1[1]是所有与第一个子模式(数字)匹配的子字符串的数组。$m1[2]是与第二个模式(单词)匹配的子字符串的数组。数组$m1的原属个数比子模式多不止一个。
使用PREG_SET_ORDER,则每一个数组原属对应于一个匹配整个模式的尝试。$m2[0]是第一组匹配('13 dogs','13','dogs')的数组,$m2[1]是第二组匹配('8 cows','8','cows')的数组,依次类推。数组$m2的元素数量与整个模式的成功匹配数相同
替换
$new=preg_replace(pattern,replacement,subject[,limit]);
limit:该限制是模式的出现可被替换的最大数(默认情况下,当传第一个-1的限制时是所有的出现)。
1)repalcement和subject都是字符串
2)subject可以是一个字符串数组,然后对数组中的项执行替换
3)要用一次preg_replace调用来在同一个字符串或字符串数组上执行多重替换,需要传递模式数组和替换物
//$r为Please do not yell--I can not jump while you will not speak
如果所给的替换物少于模式,则匹配额外模式的文本将被删除,这是一次删除很多字符串的一个便捷方法
如果一个模式数组只有一个字符串替换物,那么同样的替换物被用于每个模式,上面的等价于
/e选项使preg_repalce()将替换物作为php代码来对待,改代码返回替换物中使用的实际字符串。
EG1,下面的代码将每一个摄氏温度转换撑华氏温度
拆分
$arr=preg_split(pattern,string[,limit[,flags]]);
limit:返回信息块的最大数目,默认为-1,意思是多由信息块
flags:可以为PREG_SPLIT_NO_EMPTY(空信息块不返回)和PREG_SPLIT_DELIM_CAPTURE(在模式中捕获的字符串部分被返回)进行位或操作的结果
EG1:
preg_replace_callback(pattern,func,string):这个函数调用来得到替换字符串。传递给该函数的一个匹配数组,第0个元素是匹配模式的所有文本,第一个元素是第一个捕获到的子模式的内容,一次类推。
用正则表达式过滤数组
$arr=preg_grep(pattern,array);
eg:
$txts=preg_grep('/\.txt$/',$filenams);//得到以.txt结尾的文件名
正则表达式引用
preg_quote(string[,delimiter]):创建一个只匹配一个给定字符串的正则表达式
string:每个在正则表达式中有特殊意义的字符,如*或者$,都以反斜杠开始
delimiter:正则表达式的界定符
EG:
//下面4个函数对字母来说,中文无效
Strtoupper():转换为大写
strtolower();转换为小写
ucfirst();将第一个字符转换为大写
ucword():将每个单词的第一个字母转换为大写
字符串连接和分割
explode:分割
implode和join:连接
+展开
-PHP
strtok(string input,string separator):每次返回一个段
strtok EG:
$str="a b c d e f";
$token=strtok($str,' ');
echo $token."<br>"
while($token!='')
{
$token=strtok(' ');
echo $token.'<br>';
}
strtok EG:
$str="a b c d e f";
$token=strtok($str,' ');
echo $token."<br>"
while($token!='')
{
$token=strtok(' ');
echo $token.'<br>';
}
检查字符串是否为空
isset():检查变量是否存在,如果存在返回true,否则false
empty():检查变量是否存在及是否为空,如果变量不存在或者内容为0或者空返回true,否则false
substr(string str,int start[,int length]):返回字符串的子拷贝
start:为正数,则从这个字符到指定长度或者到结尾【从0开始计算】;为负数【从1开始计算】,则从尾部start个字符开始到指定长度或者结尾
length:返回指定个数(为正数),或者字符串的尾部(负数【不包含在此位置上的字符】)
EG
$str="abcdefg";
echo substr($str,2);//输出cdefg
echo substr($str,-2);//输出fg
echo substr($str,2,-1);//输出cdef
echo substr($str,-2,-1);//输出f
字符串比较
strcmp:区分大小写
strcasecmp:不区分大小写
strnatcmp:把字符串中存在的数字按数字来比较,例如使用上面两个函数时,'2'大于'12',但是使用这个函数时,'12'大于'2'
strnatcasecmp:strnatcmp不区分大小写的比较
strlen():返回字符串长度
匹配或者替换子字符串
strstr(string haystack,string needle):如果needle在haystatck中出现,则返回从needle开始[包含needle]到结尾的haystack的字符串。如果有多个needle在haystack中,则从第一个needle处返回
stristr和strstr基本一致,只是stristr不区分大小写
strrchr(string haystack,string needle):和strstr意思差不多,只是是从needle最后出现在haystack的位置前开始返回。而且要注意其实是查找needle的第一个字符,而不是整个needle
EG
$str="abdcdefg";
echo strrchr($str,"de")."<br>";//输出defg
echo strrchr($str,"dc")."<br>";//输出defg,并不是dcdefg
查找子字符串的位置【asp函数为instr(搜索字符串,要搜索的字符串) ==》找到返回“要搜索的字符串”的位置,否则返回0,注意和php不一样,返回的是false asp.net返回的是-1】
strpos(string haystack,string needle[,int offset]):意识和strstr差不多,只是这个函数返回位置,而不是字符串。多了一个参数offset,可以从指定的位置开始
stripos:和strpos一样,只是不区分大小写 strrpos(string haystack,string needle[,int offset]):和strrchr一样,注意也是搜索needle中的第一个字符。多了一个参数offset,可以从指定的位置开始
替换子字符串
str_replace(string needle,string new_needle,string haystack[,int &count]);使用new_needle替换haystack中的needle,count是替换的次数【注意和asp中的replace参数的位置不一样】
substr_replace(string string,string replacement,int start[,int length]):在给定位置中查找和替换特定的子串,具体是哪一部分取决于起始位置和可选参数length
start:正数则从开始计算偏移量;负数,从末尾开始计算
length:未指定则一直到结束。如果为0,则是插入字符串。正,表示替换掉的从start开始的字符串的长度。负,表示从字符串尾部开始到第length个字符停止替换
perl正则介绍
preg_match(string pattern,string str):用模式pattern匹配str
pattern:必须括在一个定界符号中,习惯上用”/“字符,例如/pattern/,除了”\“以外的任何非字母数字字符都可以座位定界符号。如#pattern#等价于/pattern/
字符类 意义 扩展
\s 空白符号 [\r\n \t]//注意有个空白符号
\S 非空白符号 [^\r\n \t]
\w 单词(标识符)字符 [0-9A-Za-z]
\W 非单词(标识符)字符 [^0-9A-Za-z]
\d 数组 [0-9]
\D 非数字 [^0-9]
锚
断言 意义
\b 单词边界
\B 非单词边界
\A 字符串的开始
\Z 字符串的末尾或在结尾的\n前
\z 字符串的末尾
^ 行的开始(如果/m标志被启用则在\n之后)
$ 行的末尾(如果/m标志被启用则在\n之前)
贪心量词和非贪心量词(?使用)
贪心 非贪心
? ??
* *?
+ +?
{m} {m}?
{m,} {m,}?
{m,n} {m,n}?
(?:)非捕获组
\数字 ==》后引用,查阅模式中先前匹配的文本:\1查阅第一个子模式匹配的内容,\2查阅第二个,依次类推。如果嵌套子模式,nemesis第一个由第一个左小括号开始,第二个由第二个左小括号开始,依次类推。
跟踪选项
修饰符 意义
/regexp/i 不区区分大小写的匹配
/regexp/s 使句点(.)匹配任何字符,包括换行符(\n)
/regexp/x 从模式中删除空白和注释
/regexp/m 使^匹配内部换行符\n后面的内容,使$匹配内部换行符\n前面的内容
/regexp/e 如果替换字符串是php代码,则对它进行evel()操作来得到实际的替换字符串
---------------------------------------其他标志
/regexp/U 翻转子模式的贪心性;*和+以尽可能少的匹配替代尽可能多的匹配
/regexp/u 是模式字符串被当作utf-8对待
/regexp/X 使反斜杠后跟一个字符没有发出错误的特殊意义
/regexp/A 使字符串的开始被锚定,就像一个模式的第一个字符是^
/regexp/D 使$字符仅仅在一行的末尾匹配
/regexp/S 使表达式解析器耕细致地检查模式的结构,使得它将在下次运行时(如在循环中)稍微快一些
内部选项
(?flags:subpattern):除了在结束模式定界符后指定模式选项外,还可以在一个模式内部指定应用于该模式的一部分的选项。如preg_match('/I like(?i:PHP)/','I like pHp');只有单词php是不区分大小写的,这次匹配返回true.
i,m,s,U,x和X可以应用于这个内部选项【可以使用多个选项】,但是可以使用“-”号来关闭结束模式中指定的选项
eg.
preg_match('/(?-i:I like) PHP/i','I like pHp'); //返回true,I like区分大小写
preg_match('/(?-i:I like) PHP/i','i like pHp'); //返回false
前瞻和后顾【()中的值不包含在组中】
结构 意义
(?=subpattern) 正前瞻
(?!subpattern) 负前瞻
(?<=subpattern) 正后顾
(?<!subpattern) 负后顾
EG.
$str="abc#abc$abc";
//"/(abc(?=\$))/" =>这个匹配 abc$,但是不匹配abc#,组1内容为abc,不包含$
//"/(abc(?!\$))/" =>这个匹配 abc#,但是不匹配abc$,组1内容为abc,不包含#
//"/((?<=#)abc))/" =>这个匹配 #abc,但是不匹配$abc,组1内容为abc,不包含#
//"/((?<!#)abc))/" =>这个匹配 $abc,但是不匹配#abc,组1内容为abc,不包含$
剪切:对一些模式表达式引擎来预防坏的行为,一旦匹配,就不返回
(?>subpattern)来标记
条件表达式
(?(condition)yespattern)
(?(condition)yespattern|nopattern)
如果断言成立,那么正则表达式引擎匹配yespattern。对于第二种,如果不成立,则跳过yespattern,执行nopattern。
condition可以是两种类型中的一种:后引用或者前瞻和后顾匹配。
函数匹配
$found=preg_match(patern,string[,captured]);
$found=preg_match_all(pattern,string,matches[,order]);
order:PERG_PATTERN_ORDER/PREG_SET_ORDER决定matches的布局。
EG.
+展开
-PHP
$str=<<<Str
13 dogs
8 cows
1 goat
Str;
preg_match_all('/(\d+) (\S+)/',$str,$m1,PREG_PATTERN_ORDER);
preg_match_all('/(\d+) (\S+)/',$str,$m2,PREG_SET_ORDER);
print_r($m1);//输出Array ( [0] => Array ( [0] => 13 dogs [1] => 8 cows [2] => 1 goat ) [1] => Array ( [0] => 13 [1] => 8 [2] => 1 ) [2] => Array ( [0] => dogs [1] => cows [2] => goat ) )
echo "<br><br>";
print_r($m2);/*输出
Array ( [0] => Array ( [0] => 13 dogs [1] => 13 [2] => dogs ) [1] => Array ( [0] => 8 cows [1] => 8 [2] => cows ) [2] => Array ( [0] => 1 goat [1] => 1 [2] => goat ) ) */
13 dogs
8 cows
1 goat
Str;
preg_match_all('/(\d+) (\S+)/',$str,$m1,PREG_PATTERN_ORDER);
preg_match_all('/(\d+) (\S+)/',$str,$m2,PREG_SET_ORDER);
print_r($m1);//输出Array ( [0] => Array ( [0] => 13 dogs [1] => 8 cows [2] => 1 goat ) [1] => Array ( [0] => 13 [1] => 8 [2] => 1 ) [2] => Array ( [0] => dogs [1] => cows [2] => goat ) )
echo "<br><br>";
print_r($m2);/*输出
Array ( [0] => Array ( [0] => 13 dogs [1] => 13 [2] => dogs ) [1] => Array ( [0] => 8 cows [1] => 8 [2] => cows ) [2] => Array ( [0] => 1 goat [1] => 1 [2] => goat ) ) */
使用PREG_PATTERN_ORDER(默认),则每个数组原属对应于一个特定的捕获子模式,所以$m1[0]是所有与模式匹配的子字符串的数组,$m1[1]是所有与第一个子模式(数字)匹配的子字符串的数组。$m1[2]是与第二个模式(单词)匹配的子字符串的数组。数组$m1的原属个数比子模式多不止一个。
使用PREG_SET_ORDER,则每一个数组原属对应于一个匹配整个模式的尝试。$m2[0]是第一组匹配('13 dogs','13','dogs')的数组,$m2[1]是第二组匹配('8 cows','8','cows')的数组,依次类推。数组$m2的元素数量与整个模式的成功匹配数相同
替换
$new=preg_replace(pattern,replacement,subject[,limit]);
limit:该限制是模式的出现可被替换的最大数(默认情况下,当传第一个-1的限制时是所有的出现)。
1)repalcement和subject都是字符串
+展开
-PHP
$str=preg_replace('/<.*?>/','!','do <b>not<b> press the button');
//$str为do !not! press the button
//$str为do !not! press the button
2)subject可以是一个字符串数组,然后对数组中的项执行替换
+展开
-PHP
$names=array('Fred Stone','Barney Rubble','Betty Rubble');
$tidy=preg_replace('/(\w)\w+ (\w+)/','\1 \2',$names);
//$tidy为('F Stone','B Rubble','B rubble');
$tidy=preg_replace('/(\w)\w+ (\w+)/','\1 \2',$names);
//$tidy为('F Stone','B Rubble','B rubble');
3)要用一次preg_replace调用来在同一个字符串或字符串数组上执行多重替换,需要传递模式数组和替换物
+展开
-PHP
$con=array("/don't/i","/won't/i","/can't/i");
$ex=array('do not','will not','can not');
$str="Please don't yell--I can't jump while you won't speek";
$r=preg_replace($con,$ex,$str);
$ex=array('do not','will not','can not');
$str="Please don't yell--I can't jump while you won't speek";
$r=preg_replace($con,$ex,$str);
//$r为Please do not yell--I can not jump while you will not speak
如果所给的替换物少于模式,则匹配额外模式的文本将被删除,这是一次删除很多字符串的一个便捷方法
+展开
-PHP
$html=array('/<.*?>/','/&.*?;/');
$str="é<b>very<b> cute";
$r=preg_replace($html,array(),$str);
//$r为 very cute
$str="é<b>very<b> cute";
$r=preg_replace($html,array(),$str);
//$r为 very cute
如果一个模式数组只有一个字符串替换物,那么同样的替换物被用于每个模式,上面的等价于
+展开
-PHP
$html=array('/<.*?>/','/&.*?;/');
$str="é<b>very<b> cute";
$r=preg_replace($html,'',$str);
//$r为 very cute
$str="é<b>very<b> cute";
$r=preg_replace($html,'',$str);
//$r为 very cute
/e选项使preg_repalce()将替换物作为php代码来对待,改代码返回替换物中使用的实际字符串。
EG1,下面的代码将每一个摄氏温度转换撑华氏温度
+展开
-PHP
$str="It was 5C outside,20C inside";
echo preg_replace('/(\d+)C\b/e','$1*9/5+32',$str);//输出:It was 41 outsize,68 inside;
EG2==
$name="showbo";
$age='25';
$str='$name is $age';
preg_replace('/\$(\w+)/e','$$1',$str);//输出 showbo is 25
echo preg_replace('/(\d+)C\b/e','$1*9/5+32',$str);//输出:It was 41 outsize,68 inside;
EG2==
$name="showbo";
$age='25';
$str='$name is $age';
preg_replace('/\$(\w+)/e','$$1',$str);//输出 showbo is 25
拆分
$arr=preg_split(pattern,string[,limit[,flags]]);
limit:返回信息块的最大数目,默认为-1,意思是多由信息块
flags:可以为PREG_SPLIT_NO_EMPTY(空信息块不返回)和PREG_SPLIT_DELIM_CAPTURE(在模式中捕获的字符串部分被返回)进行位或操作的结果
EG1:
+展开
-PHP
$str="3+5*9/2";
$ops=preg_split('{[+*/-]}',$str);//$ops 为('3','5','9','2')
EG1:
$str="3+5*9/2";
$ops=preg_split('{([+*/-])}',$str,-1,PREG_SPLIT_DELIM_CAPTURE);//$ops 为('3','+','5','*','9','/','2'),注意要想返回分割符号,需要使用()来扩起分割符号
可以使用空模式来把一个字符串拆分为每个字符的字符数组
$str="abcde";
$arr=preg_split('//',$str);//$arr为('','a','b','c','d','e','');
//要想不返回空,加上flags参数
$arr=preg_split('//',$str,-1,PREG_SPLIT_NO_EMPTY);//$arr为('a','b','c','d','e');
$ops=preg_split('{[+*/-]}',$str);//$ops 为('3','5','9','2')
EG1:
$str="3+5*9/2";
$ops=preg_split('{([+*/-])}',$str,-1,PREG_SPLIT_DELIM_CAPTURE);//$ops 为('3','+','5','*','9','/','2'),注意要想返回分割符号,需要使用()来扩起分割符号
可以使用空模式来把一个字符串拆分为每个字符的字符数组
$str="abcde";
$arr=preg_split('//',$str);//$arr为('','a','b','c','d','e','');
//要想不返回空,加上flags参数
$arr=preg_split('//',$str,-1,PREG_SPLIT_NO_EMPTY);//$arr为('a','b','c','d','e');
preg_replace_callback(pattern,func,string):这个函数调用来得到替换字符串。传递给该函数的一个匹配数组,第0个元素是匹配模式的所有文本,第一个元素是第一个捕获到的子模式的内容,一次类推。
+展开
-PHP
function titlecase($s){
return ucfirst(strtolower($s[0]));
}
$str="goodbye cruel world";
$new=preg_replace_callback('/\w+/','titlecase',$str);//$new ==> Goodbye Cruel World
return ucfirst(strtolower($s[0]));
}
$str="goodbye cruel world";
$new=preg_replace_callback('/\w+/','titlecase',$str);//$new ==> Goodbye Cruel World
用正则表达式过滤数组
$arr=preg_grep(pattern,array);
eg:
$txts=preg_grep('/\.txt$/',$filenams);//得到以.txt结尾的文件名
正则表达式引用
preg_quote(string[,delimiter]):创建一个只匹配一个给定字符串的正则表达式
string:每个在正则表达式中有特殊意义的字符,如*或者$,都以反斜杠开始
delimiter:正则表达式的界定符
EG:
+展开
-PHP
echo preg_quote('$5.00 (five bucks)');// ==> \$5\.00 \(five bucks\)
类别:PHP/apache/Perl 作者:转载 日期:2009-07-10 【评论:0】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·IE里Cookie跨域不能..
- ·php隐形字符65279
- ·Apache NameVirtual..
- ·Apache2.2提示Canno..
- ·Cookie在IE浏览器跨..
- ·获取google的pr值
- ·php根据访问者ip地址..
- ·PHP“Cannot use ob..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(598)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(92)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(24)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·PHP socket套接字学..
- ·Warning Cannot sen..
- ·php与flash as3 soc..
- ·php socket套接字聊..
- ·php获取来源页面
- ·CentOS5.5配置Apach..
- ·wget使用详解
- ·curl使用详解
随机博文
