2014-10-19 210 views
0

我试图做什么? 我尝试做代码来发现是否有重复的数据到数据库中,数据是否是文本内容由用户编写。 所以我让sql查询从数据库中获得行pagetext的结果,并从任何符号和坐标(字体颜色,字体大小和字体类型)和图像链接或任何链接清理它,并且我也为变量$post['message']文本区域的内容.. 比我检查是否$post['message']的内容相同pagetext的内容与否!从mysql查询结果php数组

全码:

// 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 2014-10-19 10:33:17

+0

@ addicted20015我会看看它现在thnx – 2014-10-19 10:45:38

+0

@ addicted20015,这不是我想..事实上,远离我想要做的事 – 2014-10-19 10:47:35

回答

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()'循环可以工作吗?(for $($ i = 0; $ i <$ ckeck_num; $ i ++){}'并在它上面循环'preg_replace' $ pagetext [$ i]'和ch eck by if($ message == $ pagetext [$ i])',你怎么看? – 2014-10-20 16:21:05

+1

是作品!告诉我:'var_dump($ pagetext);'检查这个数组。如果这是你想要的东西你拥有你所需要的一切。下一步是使用'in_array()'函数和'$ message'变量进行检查。 – 2014-10-20 17:20:50

+0

是的,实际上,我很抱歉.. 这个问题是另一回事,一个编码,内容变量'$ post ['message']'用阿拉伯语写,所以检查不工作或不发现重复的内容。 我使用'iconv()'来解决问题''message = iconv(“windows-1256”,“UTF-8”,$ post ['message']);'thnx brother – 2014-10-21 02:11:30

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; 

更新:

从数据库中使用SQL语句来创建pagetext的阵列和清除它在while循环。例如,你有这样的:

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

在此之后,清除你的后场$消息。接下来检查in_array函数。

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

我现在尝试一个好主意 – 2014-10-19 11:01:43

+0

soory,不工作:( – 2014-10-19 11:06:56

+0

检查我的更新 – 2014-10-19 11:19:49