|
|
|
| Добрый день!
Подскажите пожалуйста, как сравнить два массива $text_dubl и $text_ob (один из базы данных, другой из поля $_POST):
$text_dubl = trim($myrow555["text_obyavl"]); $text_dubl = str_replace(array("\r\n","\r","\n","<br />",",",".",";",":","-","!","?","(",")")," ","$text_dubl"); $text_dubl = preg_replace("/ +/i", " ", $text_dubl); $text_dubl = explode(" ",$text_dubl); $chislo = count($text_dubl);
$text_ob = trim($_POST['text_obyavl']); $text_ob = str_replace(array("\r\n","\r","\n","<br />",",",".",";",":","-","!","?","(",")")," ","$text_ob"); $text_ob = preg_replace("/ +/i", " ", $text_ob); $text_ob = explode(" ",$text_ob);
|
Чтобы условие выполнялось только, когда ВСЕ элементы (слова, цифры) в ОБОИХ массивах абсолютно одинаковые (не зависимо от их порядка расположения в массивах).
Причем, в массиве $text_ob элементов может быть больше, чем в $text_dubl
Пробовал так:
if(substr_count($text_dubl,$text_ob)==$chislo)
{
// Выводим сообщение о наличии дубликата
}
|
Не получается!
Че то никак не могу придумать!!!! | |
|
|
|
|
|
|
|
для: sega_z
(24.12.2011 в 16:43)
| | Дубликаты обычно просто так не появляются, этому причиной служит многократное нажатие на кнопку отправки или перезагрузка страницы без сброса POST-данных. Может лучше их исключить техническими средствами? Например, разрешив при помощи JavaScript повторное нажатие на кнопку? | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 17:07)
| | Да, это понятно!
Иногда пользователи специально подают одно и то же объявление, меняя слова местами или вообще полностью копируют существующий текст или копируют существующий текст и добавляют новые слова и т.д.
Что никак нельзя реализовать мою идею?
Может тогда как то по символам сравнивать? | |
|
|
|
|
|
|
|
для: sega_z
(24.12.2011 в 17:12)
| | Для начала лучше следить за деятельностью одного и того же пользователя - не хочет ли он разместить объявление с одним и тем же названием (с коротким временным интервалом), вежливо поинтересовавшись, не случайный ли это дубль (вроде как такое уже есть)? Вообще сильно по рукам пользователям лучше не давать, особенно, если проект не старый. | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 18:04)
| | Код я все таки придумал и реализовал, как считаете, нормально?
$text_dubl = trim($myrow555["text_obyavl"]); $text_dubl = str_replace(array("\r\n","\r","\n","<br />",",",".",";",":","-","!","?","(",")")," ","$text_dubl"); $text_dubl = preg_replace("/ +/i", " ", $text_dubl); $text_dubl = explode(" ",$text_dubl); $chislo = count($text_dubl);
$text_ob = trim($_POST['text_obyavl']); $text_ob = str_replace(array("\r\n","\r","\n","<br />",",",".",";",":","-","!","?","(",")")," ","$text_ob"); $text_ob = preg_replace("/ +/i", " ", $text_ob); $text_ob = explode(" ",$text_ob);
$a = 0;
for($n = 0; $n < count($text_ob); $n++)
{
if(mb_stripos($myrow555["text_obyavl"], $text_ob[$n]) !== false)
{
$a++;
if ($a == $chislo and substr_count($myrow555["region"],$_POST['region'])>0)
{
// Текст сообщения о наличии дубликата
}
}
}
|
Данный код находит дубликат, даже, если:
а) слова в массиве расстановлены в разном порядке
б) к дубликату добавлен другой текст | |
|
|
|
|
|
|
|
для: sega_z
(24.12.2011 в 20:37)
| | пойду ка я отсюда :D | |
|
|
|
|