2014-10-19 2 views
0

что я пытаюсь сделать? Я пытаюсь сделать код, чтобы найти, если дубликаты данных в базу данных или нет, эти данные это текст Контент, написанный пользователями. поэтому я делаю sql-запрос, чтобы получить результат строки pagetext из базы данных и очистить ее от любых знаков и координировать (цвет шрифта, размер шрифта и тип шрифта), а также ссылки на изображения или любые ссылки, а также я делаю это для переменной $post['message'], которые получают Содержимое текстовой области. , чем я проверяю, является ли контент $post['message'] тем же содержанием pagetext или нет!php array из результата запроса mysql

Полный код:

// FUNCTION TO CLEAN TEXT 
function stripBBCode($text_to_search) 
{ 
$pattern = '|[[\/\!]*?[^\[\]]*?]|si'; 
$replace = ''; 
return preg_replace($pattern, $replace, $text_to_search); 
} 

// MYSQL QUERY 
$ckeck = $db->query_read(" SELECT pagetext FROM " . TABLE_PREFIX . " post "); 
$ckeck_num = mysql_num_rows($ckeck); 

      while ($ckeckpagetext = $db->fetch_array($ckeck)) 
      { 

// RESULT FROM QUERY - here i try to make ARRAY BY [square brackets] 
$pagetext[] = stripBBCode($ckeckpagetext['pagetext']); 
$pagetext[] = preg_replace('/[\s]+/mu','', $pagetext); 
$pagetext[] = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $pagetext); 

// Variable 
$message = stripBBCode($post['message']); 
$message = preg_replace('/[\s]+/mu','',$message); 
$message = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $message); 

// LOOP 
for($x=0; $x<$ckeck_num; $x++) 
{ 
// CHECK IF THERE duplicate TEXT OR NOT 
if ($message == $pagetext[$x]) 
{ 
$ckeck_duplicate = 1; 
}else{ 
$ckeck_duplicate = 2; 
    } 
     } 
      } 

Моя проблема? мой код Почти правильно, но моя проблема в этих строках [квадратные скобки]. когда я пытаюсь большой массив для моего результата

// RESULT FROM QUERY 
$pagetext[] = stripBBCode($ckeckpagetext['pagetext']); 
$pagetext[] = preg_replace('/[\s]+/mu','', $pagetext); 
$pagetext[] = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $pagetext); 

, если я использовал только первую строку без используемой preg_replace код работает хорошо. , когда я использую [квадратные скобки] для

$pagetext[] = stripBBCode($ckeckpagetext['pagetext']); 
+0

Вы можете посмотреть на этот вопрос. http://stackoverflow.com/questions/26449506/php-extracting-string-between-two-tags-by-childs-content – addicted20015

+0

@ addicted20015 Я посмотрю на это сейчас thnx –

+0

@ addicted20015, это не я хочу .. На самом деле, далеко не то, что я хочу сделать –

ответ

0
$pagetext = array(); 
    while ($ckeckpagetext = $db->fetch_array($ckeck))  
    { 
     $tmpCheckPageText = stripBBCode($ckeckpagetext['pagetext']); 
     $tmpCheckPageText = preg_replace('/[\s]+/mu','', $tmpCheckPageText); 
     $tmpCheckPageText = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $tmpCheckPageText); 
     $pagetext[] = $tmpCheckPageText; 
    } 

И массив:

$pagetext = array('Plain text1', 'Plain text2'); 
+0

thnx, но он тоже не работает .. возможно' for() 'loop be work?' For ($ i = 0; $ i <$ ckeck_num; $ i ++) {} 'и цикл' preg_replace' на нем '$ pagetext [$ i]' и ch eck by 'if ($ message == $ pagetext [$ i])', что вы думаете? –

+1

Работает!Показать: var_dump ($ pagetext); 'Проверить этот массив. Если это то, что вы хотите, у вас есть все, что нужно. Следующий шаг - проверка с помощью функции 'in_array()' и переменной $ message. –

+0

Да, на самом деле работает, извините .. Проблема была в чем-то еще, в кодировке, переменной содержимого '$ post ['message']' пишет по-арабски, поэтому не проверяйте работу или не обнаруживайте дублированный контент. Я решаю проблему с помощью 'iconv()' like that '$ message = iconv (" windows-1256 "," UTF-8 ", $ post ['message']);' thnx brother –

0

Попробуйте Ваша функция stripBBCode и preg_replace на переменную, например $ tmpCheckPageText и после этого положить в массив $ pagetext

код :

$tmpCheckPageText = stripBBCode($ckeckpagetext['pagetext']); 
$tmpCheckPageText = preg_replace('/[\s]+/mu','', $tmpCheckPageText); 
$tmpCheckPageText = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $tmpCheckPageText); 
$pagetext[] = $tmpCheckPageText; 

UPDATE:

Создать массив pagetext из БД с помощью SQL Statement и продувка его в то время как цикл. Например, вы получили это:

$pagetext = array('Purge Text 1', 'Purge Text 2', 'Purge text 3'); 

После этого очистить свой пост поля $ сообщения. Следующая проверка: in_array функция.

echo in_array($message, $pagetext) ? 1 : 2; 
+0

Хорошая идея, я попробую сейчас –

+0

soory, не работает :( –

+0

Отметьте мое обновление –

Смежные вопросы