php - 使用 PHP 字符串将电子邮件替换为 Base64 编码的 ID

标签 php regex preg-replace preg-match

我想用电子邮件的图像替换字符串中的所有电子邮件。

我已经有一个 PHP 函数来创建提供给它的文本的图像。所以我只是在寻找如何用相应的 basse64engoded 字符串替换电子邮件。

这就是我想要的:

"my email is <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aacfd2cbc7dac6cfeacfd2cbc7dac6cf84c9c5c7" rel="noreferrer noopener nofollow">[email protected]</a> and my phone no is 349080353"

我想要一个函数将上面的字符串转换为以下字符串:

my email is <img src="image.php?id=ZG5zLWFkbWluQ437yifhb2dsZS5jb20="> and my phone no is 349080353

电子邮件的 ID 使用 base64_encode 进行编码。因此,我想要一个函数来搜索电子邮件并将其替换为以下 img 标签,并使用 base64_encode 对每封电子邮件进行编码并将其提供给“id”。

最佳答案

试试这个代码

$email_pattern = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/';

$html = preg_replace_callback($email_pattern, "encode_email", "my email is <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcb9a4bdb1acb0b99cb9a4bdb1acb0b9f2bfb3b1" rel="noreferrer noopener nofollow">[email protected]</a> and my phone no is 349080353");

echo $html;

function encode_email($matches){
    return '<img src="image.php?id='. base64_encode($matches[0]) .'">';
}

关于php - 使用 PHP 字符串将电子邮件替换为 Base64 编码的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522286/

相关文章:

Python正则表达式获取两个字符串之间的文本

java - 正则表达式 - 如果模式匹配,则替换双引号之间的字符(逗号)

php - 在何处将代码添加到自定义图库短代码

php - 如果表格不为空则隐藏按钮

php - 相当于 PHP 字符串附加的 JavaScript

java - 去掉 lib-noir 中的尾部斜杠

php - 从正则表达式 PHP 中排除符号

PHP-在特定键之前获取先前数组元素的快速方法

php - preg_替换引号内的所有换行符

php - 将字符串的每个字母包装在标签中,避免使用 HTML 标签