このコードは、フォルダー内のすべての Excel ファイルを開き、開いたファイル内のすべての電子メールを取得して配列に配置します。最後に、配列のすべての配列のすべてのコンテンツから ONE BIG 配列が必要です。すべてのファイルからのすべての電子メールの 1 つの大きな配列にする必要があります。
以下のコードは機能しません。これは単純なものだと確信しています。ありがとう
<?
$Folder = "sjc/";
$files = scandir($Folder);
function cleanFolder($file)
{
$string = file_get_contents("sjc/$file");
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $string, $matches);
$Emails[] = $matches[0];
return $Emails;
}
function beginClean($files)
{
for($i=0; count($files)>$i;$i++)
{
$Emails = cleanFolder("$files[$i]");
$TheEmails .= explode(",",$Emails);
}
/// Supposed to be a big string of emails separated by comma
echo $TheEmails; // But it just echos .... ArrayArrayArrayArrayArray etc...
// WHAT I REALLY WANT IS.. one Array holding all emails, not an Array of Arrays.
}
beginClean($files);
?>
更新: GOT TOT WORK.. ただし、メールの合計が 229911 を超えているため、メモリの問題が発生しています。
致命的なエラー: 行 33 の /home/public_html/StatuesPlus/CleanListFolder.php で 67108864 バイトの許容メモリ サイズが使い果たされました (71 バイトを割り当てようとしました)
動作したコードは次のとおりです。
<?
$Folder = "sjc/";
$files = scandir($Folder);
function cleanFolder($file)
{
//echo "FILE NAME " . $file . "<br>";
$string = file_get_contents("sjc/$file");
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $string, $matches);
$TheEmails .= implode(',', $matches[0]);
return $TheEmails;
}
function beginClean($files)
{
for($i=0; count($files)>$i;$i++)
{
$Emails .= cleanFolder("$files[$i]");
}
$TheEmails = explode(",", $Emails);
//$UniqueEmails= array_unique($TheEmails);
echo count($TheEmails);
//file_put_contents("Emails.txt", $TheEmails);
}
beginClean($files);
?>