You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP字符串替换:将by与for之间的内容替换为指定模式

用PHP实现邮件Received头的内容替换需求

这个需求用PHP的正则替换工具就能轻松搞定,核心是精准定位by和for之间的内容并替换成指定字符。

完整实现代码

// 定义原始字符串变量
$example1 = "Received: from example.host.com (example.host.com [1.2.3.4]) by received.host.com (Postfix) with ESMTP id 123456789ABCD for ; Tue, 3 Apr 2018 12:33:59 +0200 (CEST)";
$example2 = "Received: from another.example.org (unknown [22.33.44.55]) by another.received.org (Postfix) with ESMTP id 987654321FEDC for ; Tue, 3 Apr 2018 12:35:15 +0200 (CEST)";

// 正则匹配规则:精准捕获by(带空格)、中间可变内容、for(带空格)
$pattern = '/(by\s)(.*?)(\sfor)/';
// 替换模板:保留by和for的结构,中间替换为...
$replacement = '$1...$3';

// 执行替换操作
$modified1 = preg_replace($pattern, $replacement, $example1);
$modified2 = preg_replace($pattern, $replacement, $example2);

// 输出结果
echo $modified1 . PHP_EOL;
echo $modified2 . PHP_EOL;

正则规则细节解释

  • (by\s):捕获by后面的空格,确保匹配的是Received头里的关键字by,避免误匹配其他包含"by"的单词
  • (.*?):使用非贪婪匹配任意字符,这是关键——它会只匹配到第一个for前面的内容,不会过度匹配字符串后续的其他内容
  • (\sfor):捕获for前面的空格,保证替换后by...for的格式和你给出的示例完全一致

替换后效果示例

运行代码后,$modified1的输出就是你期望的格式:

"Received: from example.host.com (example.host.com [1.2.3.4]) by...for ; Tue, 3 Apr 2018 12:33:59 +0200 (CEST)"

这个方案能完美适配你提供的两个示例,也能兼容大多数标准格式的邮件Received头。

内容的提问来源于stack exchange,提问作者Darwick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:15:20