一、开始准备
feedback.html
作用是用于建立一个用户反馈界面
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<form action="processfeedback.php" method="post">
<table border="0">
<head>
<h1>Custormer Feedback</h1>
</head>
<tr>Please tell us you think.</tr>
<br/><br/>
<tr>Your name</tr>
<br/>
<tr>
<input type='text' name='name' style="width:300px"/>
</tr>
<br/>
<tr>Your email address</tr>
<br/>
<tr>
<input type='text'name='email' style="width:300px"/>
</tr>
<br/>
<tr>Your feedback</tr>
<br/>
<tr>
<input typr='text' name='feedback' style="width:300px;height:180px"/>
</tr>
<br/>
<tr>
<input type='submit' value='Send feedback'/>
processfeedback.php
作用是用户在点击html中的Send feedback后可以将邮件内容发送至$toaddress="666666666@qq.com";
这个邮箱中。
刚开始可能会失败报错:Warning: mail(): SMTP server response: 553 We do not relay non-local mail, sorry.--------->解决方法
成功则出现:
<?php
//create short variable names
$name=$_POST['name'];
$email=$_POST['email'];
$feedback=$_POST['feedback'];
//set up some static information
$toaddress="666666666@qq.com";
$subject="Feedback from web site";
$mailcontent="Customer name:".$name."\n".
"Customer email:".$email."\n".
"Customer comments:\n".$feedback."\n";
$fromaddress="From:webserver@example.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>
二、字符串格式化
chop()、ltrim()、rtrim()和trim()
trim()
函数可以除去字符串开始位置和结束位置的空格,并将结果字符串返回。默认去除的范围:\n,\r,\t,\x0B,\0和空格,第二个参数可选:是偶洞玄子去除的字符
使用:$name=trim($_POST['name'],'abzf')
;//去除默认范围外再加上所有abzf这四个字符。
ltrim()
只从字符串的开始处(左边)除去空格。
rtrim()
/chop()
只从字符串的结束处 (右边)除去空格。
nl2br()--------HTML的格式化
作用是将输入的字符串中的换行符(/n)替换为网页代码中的换行符(<br/>
),再将其内容输出到网页上:<?php echo nl2br($mailcontent);?>
php中的printf—区别
大体用法与c语言中的一样,但是额外注意一点:
printf("Total amount of order is%2\$.2f(with shipping%1\$.2f)", $total_shipping,$total)
;这句语法输出的第一个数(%2\$.2f
)实际上是对应第二个参数($total
),输出的第二个数对应的是第一个参数,其关键点是2\$
和1\$
,作用即是指向第二个/一个参数
字符串大小写的转换
格式化与取消----addslashes()和stripslashes()
使用:$feedback=addslashes(trim($_POST['feedback']));
会将传入的这个字符串中的可能会被系统当成控制符的符号进行转义----即给它们加个/
。
Stripslashes()
会移除这些反斜杠
三、字符串连接和分割
explode()、implode()和join()
$email_array=explode('@',$email);
,将邮件地址以‘@’为分隔符分为两部分,分别存入$email_array[0]
和$email_array[1]
中;
implode()和join()用法作用相同:$new_email=implode('@',$email_array);
从$email_array中取出数组元素,然后通过‘@’字符将两部分连接。
strtok()和explode()区别
二者作用是相同的,但是strtok()
可以一次定义多个分隔符。函数在执行时,是按单个分隔符来切割,而不是按整个分隔符(如:strtok('abcded',$email)
中,是按照字符串里面一旦出现abcde这几个字符中的一个便切割)
访问字符串指定位置----substr()
先设置一个变量$test='Your customer service is excellent';
substr($test,1);//返回"our customer service is excellent"
substr($test,-9);//返回"excellent"
substr($test,0,4);//返回"Your"
substr($test,5,-13);//返回从第4个到倒数第13个字符,即"customer service"
四、字符串的比较
排序-----strcmp()、strcasecmp()和strnatcmp()
strcmp($str1,$str2);
如果这两个字符串相等,该函数就返回0, 如果按字典顺序str1在str2后面(大于str2)就返回一个正数,如果str1小于str2就返回一个 负数。这个函数是区分大小写的;
strcasecmp()
则不区分大小写;
并且注意:strcmp()
和strcasecmp()
会认为2大于12,因为按字典顺序2要大于12,即按“自然排序”比较字符串。
而strnatcmp()
则是相反。
测试字符串的长度------strlen()
strlen("hello")
;
五、字符串的函数匹配与替换
查找字符串------strstr()、strchr()、strrchr()和stristr()
strstr()
和strchr()
完全相同:原型string strstr(string haystack,string needle);
,函数会返回被搜索的字符串及其后面跟随的所有内容,注意其需要区分大小写
stristr()
则不需要区分大小写;
strrchr()
,会从 最后 出现目标关键字的位置的前面返回被搜索字符串。
查找子字符串的位置------------strpos()、strrpos()
strpos()传入参数和用法与strstr()相同,但是返回值是一个int类型,指示的是出现子字符串的位置;
strrpos()是返回 最后 出现目标关键字的位置的
替换子字符串-------------str_replace()、substr_replace()
str_replace($offcolor,'%!@*',$feedback);
数组$offcolor
中若有任意词出现在$feedback
中,则会被%!@*
替代;
substr_replace()
则用来在给定位置中查找和替换字符串中特定的子字符串:string substr_replace(string string,string replacement, int start,int[length]);
字符串replacement替换字符串string中的一部分。具体是哪一部分则取决于起始位置值和可选参数length的值。
五、正则表达式
与python中类似
正则表达式之一
正则表达式之二
正则表达式之三
正则表达式之四
额外
例如:[[:alnum:]]+表示“至少有一个字母字符”。
六、正则表达式应用
匹配一个邮箱
匹配上述例子中的某个客户的邮箱地址时则可以用:^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$
查找子字符串-----------ereg()和eregi()
原型:
int ereg(string pattern,string search,array[matches]);//搜索字符串search,在pattern中寻找与正则表达式相匹配的字符串,这些字符串将会存储在数组matches中,每个数组元素对应一个子表达式。
eregi()除了不区分大小写外,其他功能与ereg()一样。
例如:eregi("shop|customer service|retail",$feedback)
替换子字符串
ereg_replace()(区分大小写)和eregi_replace()(不区分大小写):
原型:
string ereg_replace(string pattern,string replacement,string search);//在字符串search中查找正则表达式pattern的字符串,并且用字符串replacement 来替换。
分割字符串-----split()
即与 正则表达式之一 中用法相同