不限语言,不使用正则表达式和filter_var,还可以通过什么方式提取大字符串中的邮箱,并且邮箱可能多个?
使用字符串处理函数来提取大字符串中的邮箱
<?php
function extractEmails($str) {
$emails = [];
while (($atPos = strpos($str, "@")) !== false) {
$emailStartPos = strrpos(substr($str, 0, $atPos), " ");
$emailStartPos = ($emailStartPos === false) ? 0 : $emailStartPos + 1;
$emailEndPos = strpos($str, " ", $atPos);
if ($emailEndPos === false) {
$emailEndPos = strlen($str);
}
$emails[] = substr($str, $emailStartPos, $emailEndPos - $emailStartPos);
$str = substr($str, $atPos + 1);
}
return $emails;
}
// 示例用法
$bigString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Email: john@example.com; Phone: 1234567890. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Email: jane@example.com; Phone: 9876543210.";
$extractedEmails = extractEmails($bigString);
foreach ($extractedEmails as $email) {
echo "Email: " . trim($email) . "\n";
}
?>
不用正则,就等于是自己用代码去实现一个正则的解释器(DFA)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!