为了账号安全,请及时绑定邮箱和手机立即绑定

从长文本中提取电子邮件(PHP)

从长文本中提取电子邮件(PHP)

PHP
梵蒂冈之花 2023-03-04 14:19:32
我必须找到从网页源代码中提取电子邮件地址的方法。    $str=  "<a h=ref=3D.mailto:rys@adres.pl.><img src=3D.http://www.lowiecki.pl/img/list.gif=        . border=3D.0.></a></td><td class=3D.bb.>        $a = preg_split( "/ [:] /", $str )";    for($i=0;$i<count($a);$i++)        echo $a[$i];我试过了,但我不知道如何对子字符串“pl”设置限制。
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

电子邮件地址可能比我们习惯的形式复杂得多,请参阅不常见的有效地址示例

在https://emailregex.com/上提出了一个几乎完美但非常复杂的正则表达式,用于匹配大多数电子邮件地址形式。

您可以使用这个更短但更具限制性的表达式,该表达式源自 Jan Goyvaerts 在https://www.regular-expressions.info/email.html上提出的一个表达式:/\b[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}\b/i

在 PHP 脚本中,可以这样实现:

<?php

$str = "<a h=ref=3D.mailto:rys@adres.pl.><img src=3D.http://www.lowiecki.pl/img/list.gif=

        . border=3D.0.></a></td><td class=3D.bb.><a h=ref=3D.mailto:second-address@example.com.>foo</a>";


preg_match_all(

    '/\b[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}\b/i', # After https://www.regular-expressions.info/email.html

    quoted_printable_decode($str), # An e-mail address may be corrupted by the quoted-printable encoding.

    $matches

);


echo isset($matches[0]) ? '<pre>'.print_r($matches[0], true).'</pre>' : 'No address found.';

?>

该脚本输出:


Array

(

    [0] => rys@adres.pl

    [1] => second-address@example.com

)

请务必致电$matches[0]以获取找到的地址。


查看完整回答
反对 回复 2023-03-04
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

接下来的代码将搜索一封电子邮件并将其保存到一个变量中,之后您可以根据需要使用结果。


$email = preg_match_all(

  "/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",

  $str,

  $listofemails

);


if($email) {

   echo "you got a match";

}


查看完整回答
反对 回复 2023-03-04
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信