1.奇怪的strtok函数,可以根据制定参数分解字符串,每一部分相当于一个指针,需要配合循环语句才能完全执行完,注意第一参数只需给一次就ok了!,例如
[php]$a="xuandun同学:鉴于您的良好表现,特颁布本届诺贝尔和平奖|假的啦";
$c="|,:";
$b=strtok($a,$c);
while ($b){
echo "$b<br />";
$b=strtok($c);
}[/php]
2.explode函数,分解字符串为数组,这个其实前面学习的时候用到过,上例子:
[php]//把1111-11-11 按-分开为数组,并输出该数组
print_r(explode("-","1111-11-11"));[/php]
3.implode函数,终于把1111-11-11这个超级光棍节分开了,晕用它又恢复了,例:
[php]//先分开他,变成数组了
$a=explode("-","1111-11-11");
//该函数可以合并数组,使用第一个参数指定分隔符
echo implode("/",$a);[/php]
4.strpos函数搜索指定字符串第一次出现的位置(区分大小写,姊妹:stripos不区分大小写),不常用查手册
5.strrpos函数搜索指定字符串最后一次出现的位置(区分大小写,姊妹:strripos不区分大小写),不常用查手册
6.最频繁用的str_replace函数,替换字符串
[php]echo str_replace("帅哥","美女","我是帅哥");[/php]
7.strstr函数可以获取从指定字符串开始后面的字符,比若说提取邮箱的域名部分
[php]echo ltrim(strstr("admin@xuandun.com","@"),"@");
[/php]
因为是输出包括指定函数+后面的字符串,所以需要使用ltrim删除那个指定滴函数,查手册吧。
8.substr函数,指定位置读取字符串,查手册吧,写麻烦
9.统计指定字符串出现次数,substr_count函数
10.替换字符串内指定位置开始重新写为新的内容,substr_replace函数
11.刚才提前登场的ltrim函数,从字符串开始处删除字符,包括空格、换行、回车等等。rtrim函数删除从后面开始,teim函数从2头开始
12.str_pad函数,把字符串填充为指定长度的字符串,可以指定填充物,默认空格,更多参数手册吧
13.count_chars可以计算每个字符的出现频率,不常用 手册吧
14.str_word_count可以返回字符串里的所有单词成数组 不常用 手册吧
POSIX正则表达式函数
ereg()和eregi()
ereg_replace()和eregi_replace()
split()和spliti()
ereg()和eregi()ereg()字符串匹配函数,eregi()是ereg()函数的忽略大小的版本
语法格式:if (!ereg('^[^./][^/]*$', $userfile))//不匹配格式输出die
{
die('这是一个非法的文件名!');
}
ereg_replace()和eregi_replace(忽略大小写)替换
string eregi_replace (“正则表达式”,“目标替换字符”,“替换目标”)
语法格式:$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\1was", $string);\1 为继承第一个整体
echo ereg_replace("(( )is)", "\2was", $string);\2继承第二个整体
split()和spliti(忽略大小写)用正则表达式将字符串分割到数组中
list:给数组中的值赋予一些变量
语法格式:$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);//列出三个变数对应格式//以什么形式拆分 拆分谁
echo "Month: $month; Day: $day; Year: $year<br />
";
输出结果Month: 04; Day: 30; Year: 1973
多行匹配
$rows = file('php.ini'); //将php.ini文件读到数组中
//循环便历
foreach($rows as $line)
{
if(trim($line))
{
//将匹配成功的参数写入数组中
if(eregi("^([a-z0-9_.]*) *=(.*)", $line, $matches)) //循环进行多行匹配
{
$options[$matches[1]] = trim($matches[2]);
}
unset($matches);
}
}
//输出参数结果
print_r($options);
PCRE正则表达式
PCRE全称为Perl Compatible Regular Expression,意思是Perl兼容正则表达式。
在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/apple/”。
元字符(Meta-character)
元字符 说明
A 匹配字符串串首的原子
Z 匹配字符串串尾的原子
b 匹配单词的边界 /bis/ 匹配头为is的字符串 /isb/ 匹配尾为is的字符串 /bisb/ 定界
B 匹配除单词边界之外的任意字符 /Bis/ 匹配单词“This”中的“is”
d 匹配一个数字;等价于[0-9]
D 匹配除数字以外任何一个字符;等价于[^0-9]
w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]
s 匹配一个空白字符;等价于[f
tv]
S 匹配除空白字符以外任何一个字符;等价于[^f
tv]
f 匹配一个换页符等价于 x0c 或 cL
匹配一个换行符;等价于 x0a 或 cJ
匹配一个回车符等价于x0d 或 cM
t 匹配一个制表符;等价于 x09或cl
v 匹配一个垂直制表符;等价于x0b或ck
oNN 匹配一个八进制数字
xNN 匹配一个十六进制数字
cC 匹配一个控制字符
模式修正符(Pattern Modifiers)
i -可同时匹配大小写字母
M -将字符串视为多行
S -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符
X -模式中的空白忽略不计
U -匹配到最近的字符串
e -将替换的字符串作为表达使用
格式:/apple/i匹配“apple”或“Apple”等,忽略大小写。 /i
PCRE的模式单元
//1 提取第一位的属性
/^d{2}([W])d{2}\1d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[W]”的结果“/”已经被存储。下个位置“1”引用时,其匹配模式也是字符“/”。
当不需要存储匹配结果时使用非存储模式单元“(?:)”
例如/(?:a|b|c)(D|E|F)\1g/ 将匹配“aEEg”。在一些正则表达式中,使用非存储模式单元是必要的。否则,需要改变其后引用的顺序。上例还可以写成/(a|b|c)(C|E|F)2g/。