
本文讲解如何将形如 `[https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c@https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c][https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c@https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c]` 的字符串安全拆分为独立邮箱 html 片段,并动态生成 `
在实际开发中,我们常遇到从第三方系统或旧数据中获取的格式化字符串——例如用方括号 [] 包裹多个 HTML 邮箱链接(常见于 Cloudflare 邮箱保护输出)。要将其用于
✅ 正确的字符串预处理步骤
原始字符串含嵌套 HTML 和连续分隔符 ][,不能简单按 [ 或 ] 切割(易破坏内部结构)。推荐三步清洗:
- 将 ][ 替换为统一分隔符(如空格)——避免误切 href="https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c" 中的 ];
- 移除开头的 [ 和结尾的 ];
- 按空格分割,得到干净的邮箱 HTML 数组。
$emails = "[[email protected]][[email protected]][[email protected]]"; // 三步清洗:先替换分隔符,再清除首尾括号 $emails_prepared = str_replace(']', '', str_replace('[', '', str_replace('][', ' ', $emails))); // → 得到:" [email protected] [email protected] [email protected] " $emails_array = array_filter( // 过滤空元素(防首尾空格导致空项) explode(' ', trim($emails_prepared)), 'strlen' );
⚠️ 注意事项:必须使用 trim() + array_filter(https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c, 'strlen'),否则 explode() 可能产生空字符串项;若原始字符串含多余空格或换行,建议额外调用 preg_replace('/\s+/', ' ', https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c) 统一空白符;data-cfemail 属性含特殊字符,但作为 HTML 属性值无需额外转义(PHP 直接输出即可)。
✅ 安全渲染 HTML 表单
在模板中遍历数组时,务必对 value 属性内容进行 HTML 属性转义(尽管本例中内容本身是合法 HTML,但为防意外注入,推荐使用 htmlspecialchars()):
? 提示:strip_tags($email) 可提取 标签内的纯文本邮箱(如 [email protected]),提升用户体验;若需保留链接样式,可改为 html_entity_decode(strip_tags($email)) 处理 HTML 实体。
立即学习“PHP免费学习笔记(深入)”;
✅ 总结
该方案不依赖正则(避免复杂匹配风险),兼容任意数量邮箱,且完全保持原始 HTML 结构完整性。核心逻辑简洁可靠:
][ → 空格 → 清括号 → 分割 → 过滤 → 渲染。
适用于 CMS 导出、邮件模板解析等场景,是处理此类“伪结构化字符串”的典型实践。











