好的,所以我有点问题。
我正在抓一个网站,它会刮掉两个地址框 - 每个地址框可能会有细微差别。
其中一个地址是这样的:
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>
答案 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
现在应该不包含具有类似电子邮件地址的数据..