代码改变世界

第四章 字符串操作与正则表达式(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:额外的)。第五个参数可以想任何经过配置用来发送邮件的程序传递参数