我需要拆分包含一些规则的电子邮件,如下所述: PHP split email with rules
所以,我在regex101上尝试了解决方案:https://regex101.com/r/rT0yQ1/1并且它有效,但是当我在我的服务器上用php执行此操作并将电子邮件内容粘贴到文本框然后通过post发送内容时不会不再工作了。
这是我的代码:
文件teste.php:
<form method="post" action="teste2.php" enctype="multipart/form-data">
<textarea name="email" cols="110" rows="30" id="email"></textarea>
<br />
<input type="submit" value="Dividir" />
</form>
文件teste2.php:
<?php
$str = $_POST['email'];
$re = "/(?:\sF\d+.*?\n\n)(\n)/";
$subst = ">>CUT HERE>>";
$result = preg_replace($re, $subst, $str);
echo $result;
?>
我在这里试试:https://3v4l.org/mqrJc并且它有效。 然而,当我通过邮寄在textarea中发送文本时,这似乎是一个问题,因为如果我使用一个字符串就可以了。这是回声的印刷品:
打印出来:
> A N K U N F T 11.08.15 *** NEUBUCHUNG *** 11.08.15 xxx xxx X3 2830
> 14:25 17:50 18.08.15 xxx xxx X3 2831 18:40 F882129 dsdsaidsaia F882129
> xxxyxyagydaysd A N K U N F T 18.08.15 *** NEUBUCHUNG *** 11.08.15 xxx
> xxx X3 2830 14:25 17:50 18.08.15 xxx xxx X3 2831 18:40 F881554
> ZXCXZCXCXZCCXZ F881554 xcvcxvcxvcvxc F881554 xvcxvcxcvxxvccvxxcv
> 11.08.15 xxx xxx X3 2830 14:25 17:50 18.08.15 xxx xxx X3 2831 18:40 F881605 xczxcdfsfdsdfs F881605 zxccxzxzdffdsfds
删除换行符甚至更糟>&gt;&gt; CUT HERE&gt;&gt;没有出现在它的位置......
使用nl2br后输出为:
A N K U N F T 11.08.15
*** NEUBUCHUNG ***
11.08.15 xxx xxx X3 2830 14:25 17:50
18.08.15 xxx xxx X3 2831 18:40
F882129 dsdsaidsaia
F882129 xxxyxyagydaysd
A N K U N F T 18.08.15
*** NEUBUCHUNG ***
11.08.15 xxx xxx X3 2830 14:25 17:50
18.08.15 xxx xxx X3 2831 18:40
F881554 ZXCXZCXCXZCCXZ
F881554 xcvcxvcxvcvxc
F881554 xvcxvcxcvxxvccvxxcv
11.08.15 xxx xxx X3 2830 14:25 17:50
18.08.15 xxx xxx X3 2831 18:40
F881605 xczxcdfsfdsdfs
F881605 zxccxzxzdffdsfds
任何人都可以帮助我吗?非常感谢你提前!
答案 0 :(得分:2)
你的回声问题可能只是一个简单的错误就是在webbrowser上显示结果。将最后一行从echo $result;
更改为echo nl2br($result);
nl2br()
是php中的一个函数,可以将换行符转换为<br/>
,这将在Web浏览器中正确显示
请尝试以下更新的正则表达式。您的换行符不是\n
,而是\r\n
,这就是我们正在改变的所有内容。
(?:\sF\d+.*?\r\n\r\n)(\r\n)