2011-10-08 70 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。 –