doutong4088 2013-07-05 12:37
浏览 50
已采纳

优化正则表达式以捕获电子邮件签名

I have a PHP script that mirror my mailing list to web-based forum, in order to make the forum import look as nice as possible, I use regular expression to catch email signatures & style them appropriately. The signature formats that I'm catching with the regex are:

This is my message...
--
My signature
TheDude.

And

This is my message...
---------------
My signature
TheDude.

Right now I'm using this regex:

$message = preg_replace('/\s*(.+)(\s*[
]-{2,}\s+.*)/s', '$1<span class="msg_footer">$2</span>', $message);

It works, my but after some quick tests, I realized that this regex is really slow.

I'm not that good in regex, can someone please take a look at the regex & tell me how to optimize it & make it fast?

  • 写回答

2条回答 默认 最新

  • duanganleng0577 2013-07-05 12:47
    关注

    You are using regular expressions to handle the whole message, which is bound to be slow. A better alternative would be to use proper programming logic to process the message. For instance, go through the message line by line and test for each line whether it matches your "start of signature" regex. If not, add it to the array or string holding the actual message. If it does match, add the rest of the message to the footer.

    You might also want to start from the bottom instead of the top, if you think that your users will use lines matching your regex in the middle of the message.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记