PHP正则表达式POSIX风格

.at 匹配除换行符(\n)之外的,结尾为at的任意三个字符;

[a-z]at 以一个小写字母开头,at为结尾的任意三个字符;- 范围

[\$] \转义字符,匹配字符$

[abcd] abcd字母中任意一个

[a-zA-Z]一个小写字母或一个大写字母

[^a-b] 除小写字母之外的其它字符

[[:alnum:]] 文字数字字符

[[:alpha:]] 字母字符

[[:lower:]] 小写字母

[[:upper:]] 大写字母

[[:digit:]] 小数

[[:xdigit:]] 十六进制数

[[:punct:]] 标点符号

[[:blank:]] 制表符和空格

[[:space:]] 空白字符

[[:cntrl:]] 控制符

[[:print:]] 所有可打印的字符

[[:graph:]] 除空格外所有可打印的字符

[a_z]* 重复0个或多个

[a_z]+ 至少重复一次

( 子模式开始

)子模式结束

(very)*large 后缀为large, 没有前缀,或前缀为very 的字符串

{ 重复数量开始

}重复数量结束。

(very){3}  very必须重复三次

(very){2,4}  very重复2到4次

(very){2,}   very至少重复2次

^bod 在字符串开始处匹配bod

com$ 在字符串结束外匹配com

^[a-z]$ 匹配字串是否为一个小写字符的字符串

com|edu|net 选择:com或edu或net

\$ 转义字符在匹配特殊字符前需加\,如$,\,^等等

‘[a_z]’ PHP中正则表达式需使用单引号引用

? 标记子模式为可选

注意在[]内,只有\ ^ – 需要转义,在[]外所有都需要转义

调用正则在字串中查找函数:

原ereg和eregi在php5.3版本后使用会报错

目前使用preg_match,正则表达式开头和结尾需加入//,默认为区分大小写,可在正则后加入i 来不区分大小写

[cce_php]

<?php
header(“Content-Type: text/html; charset=utf-8″);
?>
<?php
echo preg_match(‘/^[a]+$/’,”a”).”<br \>”;

// 字串是否是a

echo preg_match(‘/[a]+/’,”abcde”).”<br \>”;

//字串是否包含a至少一次

echo preg_match(‘/(a){2,}/’,”aabcdea”).”<br \>”;

?>

[/cce_php]

调用正则在其它字串中查找且替换;

原使用ereg_replace和eregi_replace

现使用preg_replace 默认为区分大小写,可在正则后加入i 来不区分大小写

[cce_php]

<?php

echo preg_replace(‘/a/i’, “B”, “aaaAAA”);

//输出为BBBBBB

?>

[/cce_php]

调用正则表达式对源字符串进行分割:

原使用split 现使用preg_split 分割后内容保存在数组中,每一个分割内容为一个数组元素:

[cce_php]

<?php

$address = “thqe@qq.com”;
$arr = preg_split(“/\.|@/”, $address);
while (list($key,$value) = each($arr)){
echo “<br />”.$value;
}
?>

[\cce_php]

PHP字符串查找匹配和替换

strstr和strchr 在一个字符串中查找字符串,返回从左边第一次出现字串和其后面的内容。变体1:stristr不区分大小写,变体二:strrchr,从右边查找字串

[cce_php]

<?php
$test1 = “5”;
$test2 = “abc123,abc456,123abc”;

$test3 = “ABC”;

echo strstr($test2,$test1).”<br />”;

echo strchr($test2,$test1).”<br />”;

\\返回为56,123abc 56,123abc

echo stristr($test2,$test3).”<br />”;

\\返回为abc123,abc456,123abc

echo strrchr($test2,”123″);

\\返回为123abc

?>

[/cce_php]

strpos 查找一字串在另一个字串中的位置:第一位从0开始,最后一个参数为开始查找的位置。strrpos从右边开始查找。推介此函数查找字串是否存在,使用全等=== false 来判断是否存在

[cce_php]

<?php
$test1 = “5”;
$test2 = “1234567890abc123456″;
echo strpos($test2,$test1)

//返回为全为4

echo strpos($test2,”12”,5);

//返回值为13

?>

 

<?php

$test1 = “123”;
$test2 = “123456789”;

if (strpos($test2,$test1) == false) {
echo “不存在”;
} else {
echo “存在”;}
//输出为不存在,不正确
echo “<br />”;

if (strpos($test2,$test1) === false) {
echo “不存在”;
} else {
echo “存在”;}
//输出为存在,正确
?>

[/cce_php]

str_replace 替换字符串:在一个字串中,把老字符串替换为新字符串,最后第四个参数可以定义替换次数

[cce_php]

<?php

$testold = “123”;
$testnew = “abc”;
$test2 = “123456789”;

echo str_replace($testold,$testnew,$test2);

//返回abc456789

?>

[/cce_php]

substr_replace 用一个字符串去替换指定位置的另一个字串中的内容,参数三是开始位置,参数四是结束位置。

[cce_php]

<?php

$testold = “123”;
$testnew = “abc”;
$test2 = “123456789”;

echo substr_replace($test2,$testnew,0,5);

?>

[/cce_php]

PHP字串比较

strcmp 比较两个字串的自然排序。相等为0,小于负数,大于为正数。strcasecmp 不区分大小写,strnatcmp按自然排序比较。

[cce_php]

<?php
$test1 = “123”;
$test2 = “1212”;
echo strcmp($test1,$test2).”<br />”; //显示1

echo strcasecmp($test1,$test2).”<br />”;//显示2

echo strnatcmp($test1,$test2).”<br />”;//显示-1
?>

[/cce_php]

PHP字符串分割函数

explode 字串分割返回数组:

[cce_php]

<?php
$email = “thqe@qq.com”;
$email_test = explode(‘@’,$email);
echo $email_test[0].”</br>”;
echo $email_test[1].”</br>”;
?>

[/cce_php]

implode或join 字串合并,为explode反函数:

[cce_php]

<?php
$email = “thqe@qq.com”;
$email_test = explode(‘@’,$email);
echo $email_test[0].”</br>”;
echo $email_test[1].”</br>”;

$email_add = implode(‘@’,$email_test);
echo $email_add;

$email_add = join(‘@’,$email_test);
echo $email_add;
?>

[/cce_php]

strtok字符串分割返回第一次分隔符前面的值:

[cce_php]

<?php
$test = ” My name is xiaomin”;
$test_str = strtok($test,”x”);
echo $test_str;
?>

[/cce_php]

substr 截取字串中的一段可以定义前后位置

[cce_php]

<?php
$test = ” My name is xiaomin”;
$test_str = substr($test,1,2);
echo $test_str;

$test_str = substr($test,1,-2);
echo $test_str;
?>

[/cce_php]

 

PHP输出函数

一般输出echo,格式输出printf

b:整数转二进制;

c:整数转字符;

d:整数转小数;

f:双精度转浮点数;

o:整数转八进制;

s:字符串转字符串;

u:整数转非指定整数;

x:整数转带小写字母的十六进制数

X:整数转带大写字母的十六进制数

[cce_php]

<?php
$test_a = 12;
$test_b = “xiaomin”;

//直接输出
echo “1name:$test_b”.”<br />”.”number:$test_a<br />”;

//字串格式化输出
printf(“2name:%s<br />number:%s<br />”,$test_b,$test_a);

//字串定义先后顺序(%位置\$)
printf(“3name:%2\$s<br />number:%1\$s<br />”,$test_a,$test_b);

//number三位小数输出 f代表浮点数
printf(“4name:%s<br />number:%.3f<br />”,$test_b,$test_a);

//显示%需要两个%%
printf(“5name:%s<br />number:%s%%<br />”,$test_b,$test_a);

?>

[/cce_php]

字符串格式化函数

清除多余字符:

trim清除开始和结束,ltrim清除开始,rtrim清除结束。

trim 函数去除字串开始和结束的空格,换行符或回车符(\n或\r),水平和垂直制表符(\t和\x0b)和字串结速符(\0),设定第二个参数会过滤自定义字符。

[cce_php]

<?php
$test = ” my name is “;
echo $test.”aa<br />”;
$test_a = trim($test);

echo $test_a.”aa<br />”;

?>

[/cce_php]

 

HTML格式化函数:nl2br 将字串中的换行符(\n)替换为<br />

[cce_php]

<?php
$test = ”
Chinadaily.com.cn is the largest English porta
l in China, providing news, business information,
BBS, learning materials. The Website has channels
as China.”;
echo nl2br($test);

?>

[/cce_php]

改变字母大小写:

[cce_php]

<?php
$test_a = “My name is Xiaomin “;
$test_b = “my name is xiaomin”;
//将字符串转为大写
echo strtoupper($test_a).”<br />”;

//将字串转为小写
echo strtolower($test_a).”<br />”;

//如果第一个是字母就将首字母转为大写
echo ucfirst($test_b).”<br />”;

//字符串每一个单词首字母大写
echo ucwords($test_b).”<br />”;
?>

[/cce_php]

为存入数库库需要的格式化:

引号,单引和双引,反斜杠\,NULL字符在数据库中会被当成控制符

addslashes函数会自动在以上字符前加转义符\

stripslashes函数会自动把以上字符前的转义符去掉

 

PHP邮件函数mail使用案例

[cce_php]

<?php
//create short variable names
$name=$_post[‘name’];
$email=$_post[’email’];
$feedback=$_post[‘feedback’];

//set up some static information

$toaddress = “thqe@qq.com”;
$subject = “Feedback from web site”;
$mailcontent=”Customer name:”.$name.”\n”.”Customer email:”.$email.”\n”.”Customer comments:\n”.$feedback.”\n”;

$fromaddress = “From: thqe@qq.com”;

//invoke mail() function to send mail
mail($toaddress,$subject,$mailcontent,$fromaddress);
?>
<html>
<head>
<title>Bob’s Auto Parts – Feedback Submitted</title>
</head>
<body>
<h1>Feedback submitted</h1>
<p>Your feedback has been sent.</p>
</body>
</html>

[/cce_php]

统计数组中元素个数

统计数组总元素个数count或sizeof

[cce_php]

<?php
$array = array( “a”,”b”,”c”,1,2,3);
echo count($array);

echo “<br />”;

echo sizeof($array);
?>

[/cce_php]

统计某一个数组元素在数组中出现的次数:

array_count_values

[cce_php]

<?php
$array = array( “a”,”b”,”c”,1,2,3,3,”a”,”a”);
$array_num = array_count_values($array);
while (list($key,$value) = each($array_num)){

echo “$key => $value <br />”;
}

[/cce_php]