2011-10-08 103 views
0

好的,所以我有一些問題。擺脫PHP中的重複信息

我颳了一個網站,它會刮兩個地址框 - 每個可能有微小的差異。

其中一個地址是這樣的:

ONE MICROSOFT WAY 
REDMOND WA 98052-6399 
425-882-8080 

,另一個是這樣的:

ONE MICROSOFT WAY 
REDMOND WA 98052-6399 

我救兩個整個字符串(還有他們周圍的HTML標籤在原來的,但我不認爲有必要說明我的觀點),然後根據這些HTML標籤分開。這意味着它將每個換行符(即ONE MICROSOFT WAY)作爲一個單獨的變量進行處理。

我想要做的是看看地址之間是否有重複,問題在於它們是第一個數組中的單獨值,然後是內部數組(我不確定PHP的術語,與我一起裸露),它將逐行分隔兩個地址中的每一個。

所以基本上,有沒有辦法來檢查重複值?

下面是示例數據:

<div class="mailer"> 
Mailing Address 
<span class="mailerAddress">ONE MICROSOFT WAY</span> 
<span class="mailerAddress">REDMOND WA 98052-6399</span> 
<div class="mailer"> 
Business Address 
<span class="mailerAddress">ONE MICROSOFT WAY</span> 
<span class="mailerAddress">REDMOND WA 98052-6399</span> 
<span class="mailerAddress">425-882-8080</span> 
+0

那麼,無論如何,這將需要一些編程工作。你試過什麼了?你偶然發現了什麼問題? –

+0

您可以檢查一個字符串是否存在於另一個字符串中。 –

+0

我不知道你在問什麼。鑑於你上面提供的輸入,你需要什麼作爲輸出?當你說重複的時候,你指的是重複的行,比如「ONE MICROSOFT WAY」行和「REDMOND WA 98052-6399」行嗎?如果是這樣,那麼不僅僅是一個簡單的迭代和比較就足夠了嗎? –

回答

2

我用下面的方法來清理數據.. 第一個,查找模式,也許像如果數組A是array('Hello', 'World')和數組B是array('Hello World')可以通過合併說if(count(array) > 1) array = array[0] . ' ' .array[1] 至於你的情況,可以說,每行都被HTML標籤包裹,但每行都存儲在不同的數組中,我錯了嗎?

我會很高興,如果你可以給樣本數據.. 我會用任何低於我的示例代碼...

<? 
$sampleData = array(
    array('<p>ONE MICROSOFT WAY</p>', 'REDMOND'), 
    array('<p>ONE MICROSOFT WAY</p>', 'REDMOND', 'Number') 
); 

foreach($data as $value) { 
    unset($newKey); 
    $newKey = trim(strip_tags($value[0])).trim(strip_tags($value[1])); 
    $cleanData[$newKey] = $value; 
} 
?> 

的一點是,相同的密鑰將覆蓋,結束了獨特的輸出鍵(存儲唯一值)...

另一個樣品是,如果你想清除類似的電子郵件地址出存儲在CSV /陣列數據的..

<?  
foreach($data as $value) { 
    $cleanData[$value['email']] = $value; 
} 
?> 

儘可能簡單.. $cleanData現在應該不包含具有類似電子郵件地址的數據..

+0

我添加了示例數據。 –

+0

對於遲到的回覆感到抱歉,你是否設法做到這一點?因此複選標記?還是必須根據您的樣本數據來優化我的答案?雖然我仍然需要知道數組1是什麼,數組2是什麼...(更像是樣本數據的print_r輸出) – Vyriel

+0

我還沒有設法做到這一點。讓我試試陣列上的print_r。 –