求高手一个正则表达式

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:25:46
各位,求一个问题的解决办法:

我想在mail3.php文件中读取mail.txt文件中的内容,里面的内容格式有
“感谢您的询问,
姓名:
住址:
电话:
内容:”
,而我在mail1.php中输入用户的信息,包括姓名,住址,电话,内容等等,都将这些存储在$_SESSION['mail']里面,现在的问题是,如何将存储在session中的内容按照mail.txt文件的格式进行各个项目的对应。最后要的效果是:

感谢您的询问,
姓名: duke
住址: 中国
电话: 123456
内容: 测试
请问各位高手,使用正则可以实现这个问题吗
我写的代码是
$handle=@fopen("mail.txt","r");
$text = '';
if ($handle) {
while (!feof($handle))
{
$buffer = fgets($handle, 4096);
$text .= $buffer;
}
fclose($handle);
$message =join("\r\n", $_SESSION['mail']);
$text=preg_replace('[:]',$message,$text);
}
出来的效果是
感谢您的询问,
姓名:
住址:
电话:
内容: duke,
中国,
123456,
测试
------------------------------------------------
完全没明白三楼说的,不好意思我太菜了。
----------------------------------------------

mail.txt

感谢您的询问,
姓名:{{name}}
住址:{{addr}}
电话:{{tel}}
内容:{{content}}

其它我就不用说了吧

应该没问题,如果只是抽取上面对应条目的话:
比如:

抽取正则:
^姓名:\s+(\S+)
^住址:\s+(\S+)
^电话:\s+([0-9\-]+)
^内容:\s+(\S.*)$

或者你有更详细的需求 那么可以上面正则我可以写的更详细点

你这里的情况不用正则更方便,代码都给你写好了,分拿来吧。

为了测试方便,我直接把内容写在代码里。读取文件内容的时候,你用file_get_contents($filename)函数,直接就把内容全部读出来了。不清楚就查下手册。mail.txt的内容参照$mail修改一下,这种方法绝对是简便易行的。

$mail = <<<EOF
感谢您的询问,
姓名:!!!name!!!
住址:!!!address!!!
电话:!!!phone!!!
内容:!!!content!!!
EOF;

$mail1 = <<<EOF
duke
中国
123456
测试
EOF;

$search = array('!!!name!!!','!!!address!!!','!!!phone!!!','!!!content!!!');
$replace = explode("\n",trim($mail1));
$str = str_replace($search,$replace,$mail);
var_dump($str);

---------------<