2

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

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

这正是我想要的:

"my email is example@example.com 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”。

4

4 回答 4

2

试试这个代码

$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 example@example.com and my phone no is 349080353");

echo $html;

function encode_email($matches){
    return '<img src="image.php?id='. base64_encode($matches[0]) .'">';
}
于 2013-01-25T13:19:05.647 回答
0
$content = "my email is example@example.com and my phone no is 349080353"
preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})/i", $content, $matches);

print $matches[0];
于 2013-01-25T13:00:57.490 回答
0

检查了这个作品:)

<?php 
 $string = "my email is example@example.com and my phone no is 349080353";
 $pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
 $replacement = '<img src="">';
 $string1 = preg_replace($pattern, $replacement, $string);
 echo $string1
?>
于 2013-01-25T13:11:13.547 回答
0
<?php
$content = "my email is example@example.com, my 2nd email is example2@example.com and my phone no is 349080353";
$c='a-zA-Z-_0-9'; // allowed characters in domainpart
$la=preg_quote('!#$%&\'*+-/=?^_`{|}~', "/"); // additional allowed in first part (localpart)
$email="[$c$la][$c$la\.]*[^.]@[$c]+\.[$c]+";
preg_match_all("/\b$e\b/", $content, $matches);
foreach ($matches[0] as $e){
  $content = preg_replace("/\b($email)\b/", '<img src="'.base64_encode($e).'">', $content);
}
echo $content;

要真正捕获所有有效的电子邮件地址,请参阅:电子邮件地址中允许使用哪些字符?

于 2019-05-07T10:39:58.543 回答