2015-11-13 40 views
0

我問了這個問題:Javascript/jQuery find and delete array value in the rest of array,但我覺得我解釋錯了。這是我的第二次嘗試。jQuery查找並刪除使用相同數組的數組中的字符串

我使用PHP的imap函數拉電子郵件。我能夠成功地拉電子郵件。以下是代碼片段,展示瞭如何編碼。

foreach($all_email_dates as $email){ 
    $email_id = explode(":", $email); 
    $email_id = $email_id[1]; 
    $email = imap_fetchbody($inbox, $email_id, 1.1, FT_UID); 
    if($email == "") $email = imap_fetchbody($inbox, $email_id, 1, FT_UID); 
    if(imap_base64($email)) $email = imap_base64($email); 
    $email = quoted_printable_decode($email); 
    $email = preg_replace('/(^\w.+:\n)?(^>.*(\n|$))+/mi', '', $email); 
    array_push($emails, $email); 
    echo $email; 
    echo "<:>"; 
} 

這將拉我需要的所有電子郵件,並按時間順序。

現在,我抓住他們使用AJAX調用,並嘗試在這裏操縱他們:

$.post('php/contacts-get-email.php', {email:email}, function(data) { 
    var email_body = data.split("<:>"); //Puts each email into an array 
    console.log(email_body); 
    //I have test code here for now that is not working 
}); 

我想要做的是通過陣列(email_body)迭代,找到並刪除任何重複的字符串。上面的輸出顯示在這裏:http://jsfiddle.net/exdjumqm/。 (我把它放在一個小提琴,而不是在這裏,因爲它會得到太長,在這裏顯示)--- 地址這裏有一個JSON文件有太多發揮:http://412webdesigns.com/uploads/emails.json

主要目標是刪除任何文本以前在電子郵件中。如果可能的話,我想保留回車格式的目的。

例如,第一封電子郵件有一段文字顯示在電子郵件2和4中。我希望刪除該文本。但我不確定該從哪裏出發。

如果您需要更多詳細信息,請讓我知道。謝謝

UPDATE 下面是粘貼在這裏的電子郵件字符串:

第一封電子郵件

Thanks so much name! We had a great time today too and can't wait to 
see\r\nwhat the pictures look like! Looking forward to seeing them when you're 
all\r\ndone editing! Thanks again :)\r\n 

第二封電子郵件

Hi name!\r\n\r\n\r\n\r\nThank you for the email! You don't have to wait any 
further!\r\n\r\n\r\n\r\nWe were able to get around 70 pictures that we think 
were noteworthy! To \r\ndownload ALL of your pictures, head to 
www.site.com\/download \r\nand use the password \"AN5k9W\". This should 
automatically start your \r\ndownload, so check your downloads folder. It's a 
half of a gig, so the file \r\nis pretty large!\r\n\r\n\r\n\r\nTo check out 
some of the pics while you're waiting on the download, head to 
\r\nhttp:\/\/site.com\/#\/151108-name_name-engagement or 
\r\nfacebook.com\/site. Remember to like us and share your pics \r\nwith 
anyone you want!\r\n\r\n\r\n\r\nLet us know what you think!\r\n\r\nWe look 
forward to henameng from you!\r\n\r\nname & name\r\n\r\n\r\n\r\nOn Sun, Nov 8, 
2015 at 2:52 PM name name <[email protected]> \r\nwrote:\r\n\r\n\r\nThanks so 
much name! We had a great time today too and can't wait to see \r\nwhat the 
pictures look like! Looking forward to seeing them when you're all \r\ndone 
editing! Thanks again :)\r\n 

你會發現第二個電子郵件包含第一因爲它是第一個回覆的電子郵件。

+0

你想刪除先前已在一封電子郵件中的文本。 '文本',你的意思是,句子? (或文字?) – thewisenerd

+0

也可以,你可以提供一個'.json'文件,可以使用? – thewisenerd

+0

@VineethRaj句子,段落。如果你看一下上面的小提琴,你會看到第一封電子郵件是一段句子。在第二封電子郵件的底部,您會看到同一段再次重複。我希望將第一封電子郵件從第二封(和第四封)電子郵件中刪除。 – ntgCleaner

回答

1
var formatted_email_body = []; // Init a blank array 
var email_body = data.split("<:>"); 

for(var i=0; i<email_body.length; i++) 
{ 
    if(formatted_email_body.indexOf(email_body[i]) == -1) // If not in the new array 
     formatted_email_body.push(email_body[i]); // Push it 
} 

現在formatted_email_body是一個只有唯一值的數組。

+0

以上的說明中添加了JSON文件,'.indexOf()'不搜索電子郵件或在字符串中找不到字符串。當我登錄'formatted_email_body'時,它會顯示所有包含完整字符串的電子郵件 – ntgCleaner

+0

您可以顯示「email_body」中的內容嗎? – void

+0

是的,這是在小提琴中,也是我在OP http://jsfiddle.net/exdjumqm/中鏈接的json對象。 – ntgCleaner

0

由於這個問題是如此稀釋,我想只給正在工作對我來說,現在我又回到了PHP的答案...

和使用的一些「規則」,以削減垃圾郵件。這裏是規則,如果任何人有興趣:

//Get your email 
$email = imap_fetchbody($inbox, $email_id, 1.1, FT_UID); //check body types 
if($email == "") $email = imap_fetchbody($inbox, $email_id, 1, FT_UID);// check body types 
if(imap_base64($email)) $email = imap_base64($email);//decode base64 if it is 
$email = quoted_printable_decode($email); //Decode the Email 
$email = explode("\r\n\r\nOn", $email); //split the email if the reply starts with "On this day, this person wrote" 
$email = explode("\r\n>", $email[0]); //Split the email again if the line starts with a line break and "less than" sign (>) which usually denotes a reply 
$email = str_replace("\r\n\r\n", '<br />', $email[0]); //Give normal line breaks to double carriage returns and newlines 
$email = str_replace("\r", ' ', $email); //Give spaces to unused carriage returns 
echo $email; 
0

根據您的意見,我已經把一個函數uniqParagraphs。希望你覺得它有用:)

arr = ["Thanks so much name! We had a great time today too and can't wait to see\r\nwhat the pictures look like! Looking forward to seeing them when you're all\r\ndone editing! Thanks again :)\r\n","Hi name!\r\n\r\n\r\n\r\nThank you for the email! You don't have to wait any further!\r\n\r\n\r\n\r\nWe were able to get around 70 pictures that we think were noteworthy! To \r\ndownload ALL of your pictures, head to www.site.com\/download \r\nand use the password \"AN5k9W\". This should automatically start your \r\ndownload, so check your downloads folder. It's a half of a gig, so the file \r\nis pretty large!\r\n\r\n\r\n\r\nTo check out some of the pics while you're waiting on the download, head to \r\nhttp:\/\/site.com\/#\/151108-name_name-engagement or \r\nfacebook.com\/site. Remember to like us and share your pics \r\nwith anyone you want!\r\n\r\n\r\n\r\nLet us know what you think!\r\n\r\nWe look forward to henameng from you!\r\n\r\nname & name\r\n\r\n\r\n\r\nOn Sun, Nov 8, 2015 at 2:52 PM name name <[email protected]> \r\nwrote:\r\n\r\n\r\nThanks so much name! We had a great time today too and can't wait to see \r\nwhat the pictures look like! Looking forward to seeing them when you're all \r\ndone editing! Thanks again :)\r\n\r\n","name and name,\r\nWe LOVE them!! We can't thank you guys enough! I definitely think we're\r\nready to talk wedding prices! :)\r\n\r\nname\r\n\r\nOn Wed, Nov 11, 2015 at 6:52 PM, Grealish Photography <\r\[email protected]> wrote:\r\n\r\n","Great name!! We're so happy you love them! And thank you for being such \r\ngreat models!\r\n\r\n\r\n\r\nWe have you penciled in for September 24th, 2016 so far. To get it booked \r\npermanently, we should schedule a time for us to sit down together and have \r\na pre-wedding consultation. During the pre-wedding consultation, we'll go \r\nover any details you may have for the wedding, go over the contract and \r\nthen exchange the deposit. The deposit will be 50% of the full cost of our \r\nservices.\r\n\r\n\r\n\r\nTo figure out the cost, I'll just need you to let me know how much time you \r\nneed us for and where the wedding is located. This will determine the cost \r\nand the deposit.\r\n\r\n\r\n\r\nTo break down our pricing, we charge for our time at the event, time \r\nediting (it's about 1:1, wedding:editing), and our time traveling. So a 6 \r\nhour wedding with 1 hour of travel time is actually 13 hours of work on our \r\nend.\r\n\r\n\r\n\r\nLet me know what you think and how much time you're thinking for your \r\nwedding (as well as where it's located) and I can give you a final price!\r\n\r\n\r\n\r\nWe look forward to henameng from you!\r\n\r\nname & name\r\n\r\n\r\n\r\nOn Wed, Nov 11, 2015 at 10:09 PM name name <[email protected]> \r\nwrote:\r\n\r\n\r\nname and name,\r\nWe LOVE them!! We can't thank you guys enough! I definitely think we're \r\nready to talk wedding prices! :)\r\n\r\n\r\nname\r\n\r\n\r\n\r\nOn Wed, Nov 11, 2015 at 6:52 PM, Grealish Photography \r\n<[email protected]> wrote:\r\n\r\n\r\nHi name!\r\n\r\n\r\n\r\nThank you for the email! You don't have to wait any further!\r\n\r\n\r\n\r\nWe were able to get around 70 pictures that we think were noteworthy! To \r\ndownload ALL of your pictures, head to www.site.com\/download \r\nand use the password \"AN5k9W\". This should automatically start your \r\ndownload, so check your downloads folder. It's a half of a gig, so the file \r\nis pretty large!\r\n\r\n\r\n\r\nTo check out some of the pics while you're waiting on the download, head to \r\nhttp:\/\/site.com\/#\/151108-name_name-engagement or \r\nfacebook.com\/site. Remember to like us and share your pics \r\nwith anyone you want!\r\n\r\n\r\n\r\nLet us know what you think!\r\n\r\nWe look forward to henameng from you!\r\n\r\nname & name\r\n\r\n\r\nOn Sun, Nov 8, 2015 at 2:52 PM name name <[email protected]> \r\nwrote:\r\n\r\n\r\nThanks so much name! We had a great time today too and can't wait to see \r\nwhat the pictures look like! Looking forward to seeing them when you're all \r\ndone editing! Thanks again :)\r\n\r\n\r\n"] 
uniq = {}; 
uniqParagraphs = function(e) { 
    $a = e.match(/[^\r\n]+[\r\n\r\n]+/g); // split into paragraphs 

    $($a).each(function (index, sentence) { 
    // calc one way hash for trim'ed text 
    // these are smaller uniq values for large texts 
    key = calcMD5(sentence.trim()); 
    // else use a very large key too 
    // key = sentence.trim(); 
    if (uniq[key] !== undefined) { // if para already exists, remove it 
     $a[index] = ""; 
    } else { 
     uniq[key] = true; // add para to uniq dictionary 
    } 
    }); 

    return $a.join(""); // join everything again 
} 

$(arr).each(function(i, e) { 
    arr[i] = uniqParagraphs(e); // update arr[i] 
}); 

這裏有一個的jsfiddle,以防:http://jsfiddle.net/exdjumqm/1/

相關問題