在PHP中摆脱重复信息

时间:2011-10-08 17:49:09

标签: php

好的,所以我有点问题。

我正在抓一个网站,它会刮掉两个地址框 - 每个地址框可能会有细微差别。

其中一个地址是这样的:

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

另一个是这样的:

ONE MICROSOFT WAY
REDMOND WA 98052-6399

我为两者保存了整个字符串(原始文件中有HTML标签,但我认为没有必要说明我的观点),然后根据这些HTML标签分开。这意味着它将每个换行符(即一个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>

1 个答案:

答案 0 :(得分: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 / array中的数据中清除类似的电子邮件地址..

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

就这么简单.. $cleanData现在应该不包含具有类似电子邮件地址的数据..