第四章 字符串操作与正则表达式(1)
2016-07-26 18:03 yojiaku 阅读(340) 评论(0) 编辑 收藏 举报学习重点:
字符串的格式化;
字符串的连接和分割;
字符串的比较;
使用字符串函数匹配和替换字符串;
使用正则表达式。
4.1 创建一个示例应用程序:智能表单邮件
为Bob的顾客建立一个直观而实用的意见反馈表单,在这个表单中,顾客可以输入他们的投诉和表扬。与其他表单不同的是:我们不是将表单全部内容发给一个统一的电子邮件地址,而是尝试加入一些智能处理功能,例如在顾客的输入信息中查找一些关键词和短语,然后再把邮件发送到Bob公司适当的雇员那里。
下面是本例使用的html文件(feedback.html):
<html> <head> <title>Bob's Auto Parts - Customer Feedback</title> </head> <body> <h1>Customer Feedback</h1> <p>Please tell us what you think.</p> <form method=post action="processfeedback.php"> Your name: <br /> <input type=text name="name" size=40> <br /> Your email address: <br /> <input type=text name="email" size=40> <br /> Your feedback: <br /> <textarea name="feedback" rows=5 cols=30></textarea> <br /> <input type=submit value="Send feedback"> </form> </body> </html>
html效果图:
解释:<textarea> </textarea>标签
<textarea> 标签定义多行的文本输入控件。
文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。
可以通过 cols 和 rows 属性来规定 textarea 的尺寸,不过更好的办法是使用 CSS 的 height 和 width 属性。
注释:在文本输入区内的文本行间,用 "%OD%OA" (回车/换行)进行分隔。
提示:可以通过 <textarea> 标签的 wrap 属性设置文本输入区内的换行模式。
下面给出本例使用的php文件(processfeedback.php):
<?php //create short variable names $name = $_POST['name']; $email = $_POST['email']; $feedback = $_POST['feedback']; //set up some static information $toaddress = "feedback@example.com"; $subject = "Feedback from web site"; $mailcontent = "Customer name:".$name."\n". "Customer email:".$email."\n". "Customer comments:\n".$feedback."\n"; $fromaddress = "From:webserve@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>
通常,我们应该用isset()函数来检查用户是否已经填写了所有要求的表单域。
在这个脚本中,我们将表单中各个域的内容连接在一起($toaddress, $subject, $mailcontent, $fromaddress),然后使用mail()函数将它们发送到feedback@example.com。我们将它替换成我们自己的邮箱来进行测试。
测试过程中我遇到了这样的问题:Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() inC:\xampp\htdocs\fourCapture\processfeedback.php on line 19,即在主机25端口,不能连接到邮件服务器,请核实您的SMTP(邮件传输协议).---在XAMPP文件夹中有写解决方法
示例效果:
用于发送邮件的邮箱显示结果:
用于收邮件的邮箱显示结果:
代码解释:
我们用来发邮件的函数--mail(): bool mail(string to, string subject, string message, string [ additional_headers [, string additional_parameters]]);
其中前三个参数是必须的,分别代表发送邮件的目的地址(string to)、主题行(string subject)、消息内容(string message)。第四个参数可以用来发送额外的、有效的邮件头(additional:额外的)。第五个参数可以想任何经过配置用来发送邮件的程序传递参数