Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сравнить два массива?
 
 автор: sega_z   (24.12.2011 в 16:43)   письмо автору
 
 

Добрый день!

Подскажите пожалуйста, как сравнить два массива $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)
{
// Выводим сообщение о наличии дубликата
}


Не получается!
Че то никак не могу придумать!!!!

  Ответить  
 
 автор: cheops   (24.12.2011 в 17:07)   письмо автору
 
   для: sega_z   (24.12.2011 в 16:43)
 

Дубликаты обычно просто так не появляются, этому причиной служит многократное нажатие на кнопку отправки или перезагрузка страницы без сброса POST-данных. Может лучше их исключить техническими средствами? Например, разрешив при помощи JavaScript повторное нажатие на кнопку?

  Ответить  
 
 автор: sega_z   (24.12.2011 в 17:12)   письмо автору
 
   для: cheops   (24.12.2011 в 17:07)
 

Да, это понятно!

Иногда пользователи специально подают одно и то же объявление, меняя слова местами или вообще полностью копируют существующий текст или копируют существующий текст и добавляют новые слова и т.д.

Что никак нельзя реализовать мою идею?

Может тогда как то по символам сравнивать?

  Ответить  
 
 автор: cheops   (24.12.2011 в 18:04)   письмо автору
 
   для: sega_z   (24.12.2011 в 17:12)
 

Для начала лучше следить за деятельностью одного и того же пользователя - не хочет ли он разместить объявление с одним и тем же названием (с коротким временным интервалом), вежливо поинтересовавшись, не случайный ли это дубль (вроде как такое уже есть)? Вообще сильно по рукам пользователям лучше не давать, особенно, если проект не старый.

  Ответить  
 
 автор: sega_z   (24.12.2011 в 20:37)   письмо автору
 
   для: 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)
{
// Текст сообщения о наличии дубликата
}
}
}


Данный код находит дубликат, даже, если:
а) слова в массиве расстановлены в разном порядке
б) к дубликату добавлен другой текст

  Ответить  
 
 автор: sl1p   (24.12.2011 в 22:54)   письмо автору
 
   для: sega_z   (24.12.2011 в 20:37)
 

пойду ка я отсюда :D

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования