Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с кодировкой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alex131
Отправлено: 24 Ноября, 2012 - 14:50:22
Post Id



Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




Здравствуйте друзья, подскажите пожалуйста в чем проблема, кодировка сайта и бд utf-8, сделал поиск, но он выводит результаты знаками вопросов, пытался перекодировать результат функцией iconv но после перекодирования он выводит иероглифы.
На другом сайте с кодировкой windows-1251 работает без проблем.
Вот код обработчика:
PHP:
скопировать код в буфер обмена
  1. include ("../blocks/db.php");
  2.  
  3. $search = $_POST['search_word'];
  4.  
  5. /*-------------------------------------------------ФУНКЦИИ------------------------------------------------------------------ */
  6. function stopWords($query) {
  7.         $reg = "/\s(под|много|что|когда|где|или|которые|поэтому|все|будем|как|)\s/im";
  8.         $query = preg_replace($reg,'',$query);
  9.         return $query;
  10. }
  11.  
  12. /*--------------------------------------------------------------------------------------------------------------------- */
  13. function dropBackWords($word) {
  14.         $reg = "/(ый|ой|ая|ое|ые|ому|а|о|у|е|ого|ему|и|ство|ых|ох|ия|ий|ь|я|он|ют|ат)(\s|$)/i";
  15.         $word = preg_replace($reg,'',$word);
  16.         return $word;
  17. }
  18. /*----------------------------------------------------------------------------------------------------------------------------- */
  19.  
  20. function colorSearchWord($word, $string, $color) {
  21.    
  22.         $replacement = "<span style='color:".$color."; background-color:#FFFF00;'>".$word."</span>";
  23.         $result = str_replace($word, $replacement, $string);
  24.         return $result;
  25. }
  26. /*---------------------------------------------------------------------------------------------------------------------------- */
  27. function explodeQuery($query) {        
  28.    
  29.         $query = mb_strtolower(stopWords($query));
  30.    
  31.         $words = preg_split("/[\s]+/", $query);
  32.         $i = 0;                                                
  33.         $keywords = "";                
  34.        
  35.         foreach ($words as $word) {    
  36.                 $word = trim($word);
  37.                        
  38.                         if (strlen($word)>4) {
  39.                                 $keywords[$i]=dropBackWords($word);    
  40.                                 $i++;                                                          
  41.                         }
  42.                         else {
  43.                 $keywords[$i]=$word;                           
  44.                 $i++;
  45.             }
  46.         }
  47.         if($word == "stop"){ return $word; }
  48.         else{ return $keywords; }
  49. }
  50. /*---------------------------------------------------------------------------------------------------------------------------- */
  51.  
  52. function searchResult3($material3, $keywords) {
  53.        
  54.         foreach ($material3 as $material) {
  55.                 $title = mb_strtolower(htmlspecialchars(strip_tags($material[title])));
  56.                 $text = mb_strtolower(htmlspecialchars(strip_tags($material[text])));
  57.                
  58.                 $wordWeight =0;
  59.                 foreach ($keywords as $word) {  
  60.                         $reg = "/(".$word.")/";        
  61.                        
  62.                         $wordWeight = preg_match_all($reg, $title, $out);      
  63.                         $wordWeight += preg_match_all($reg, $text, $out);      
  64.                         $wordWeight += preg_match_all($reg, $key, $out);       
  65.                         $material['relevation'] += $wordWeight;
  66.                        
  67.                         $title = colorSearchWord($word, $title, "red");
  68.                         $text = colorSearchWord($word, $text, "red");
  69.                        
  70.                        
  71.                 }
  72.                
  73.  
  74.                 if($material[relevation]!=0) {
  75.                        
  76.                         $res=$material[title] = $title;
  77.                         $rec=$material[text] = $text;
  78.                         //$rec=iconv("CP1251","UTF-8" , $rec);пробовал перекодировать результат, получил иероглифы.
  79.                        
  80.                         $recs = substr($rec,0, 430);
  81.                          
  82. $rez = '<li id="programsss" style="border:1px solid #909090; color:#ffffff; background-color:#8C8C8C; border-radius:5px; margin-top:5px; padding:10px;"><a style="font-size:19px; " href="programs.php?id='.$material['id'].'"><img src="images/program.png">' . $res . '</a>'."<p style='font-weight:normal;'>". $recs ."..."."</p>"."<p style='color:#FFFF00;'>"."Совпадений: ". $material[relevation]."</p></li>";
  83.                          
  84.         echo $rez;
  85.                 }
  86.                 else{
  87.                   unset($rez);
  88.                   }      
  89.         }
  90.         }
  91. /*--------------------------------------------------------- КОНЕЦ ФУНКЦИЙ------------------------------------------------------ */
  92.  
  93.         if(isset($search) && $search !== "Поиск...") {
  94.        
  95.         $query = trim($search);
  96.         $query = mysql_real_escape_string($query);
  97.         $query1 = mb_strtolower($query);
  98.         $query1 = iconv("UTF-8", "windows-1251",$query1);
  99.        
  100.         if(!mb_eregi("^[[:alnum:] ]*$", $query1)){exit ("<p style='color:red; background-color:black; border-radius:5px; padding:10px 30px;'>Недопустимый запрос! Используйте только буквы и цифры!</p>");}
  101.         $reg = "/((\{)|(\[)|(\()|(\*)|(\')|(\")|(select)|(limit)|(from)|(connect)|(root)|(bin)|(<)|(>)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)
  102.         |(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download))/";
  103.     $result = preg_match($reg, $query1, $maches);
  104.                 echo $result;
  105.         if($result == 1){exit ("<p style='color:red; background-color:black; border-radius:5px; padding:10px 0 10px 10px;'>Недопустимый запрос! Используйте только буквы и цифры!</p>");}
  106.         else{
  107.        
  108.         $keywords = explodeQuery($query);
  109.    
  110.           $sql3 = "SELECT id, title, text, mini_img  FROM program ";
  111.           $results3 = mysql_query($sql3);
  112.          
  113.                 if (mysql_num_rows($results3)!=0) {
  114.                
  115.                 while($row3 = mysql_fetch_assoc($results3))
  116.                 {
  117.                         $material3[$row3[id]] = $row3;
  118.                 }
  119.                
  120.          //print_r($material3);
  121.       searchResult3($material3,$keywords); }
  122.                        
  123.         else {
  124.            
  125.         echo "Произошла ошибка!";
  126.     }
  127.        
  128.   }
  129. }
  130.        
  131. else{ return false; }
  132.        
  133.  
 
 Top
avtor.fox
Отправлено: 24 Ноября, 2012 - 15:56:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




?
 
 Top
Alex131
Отправлено: 24 Ноября, 2012 - 16:49:08
Post Id



Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




avtor.fox спасибо за ответ) некогда не пользовался, подскажите как правильно прописать в моем случае?

(Отредактировано автором: 24 Ноября, 2012 - 16:54:55)

 
 Top
avtor.fox
Отправлено: 24 Ноября, 2012 - 16:52:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




Alex131
после подключения к базе -
 
 Top
Alex131
Отправлено: 24 Ноября, 2012 - 17:00:11
Post Id



Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




немного не так спросил, куда именно прописать? там же так:

прописать вашу строку перед этой или как?

Делал проверку данных которые загружаются с бд, текст нормально выводится, а вот после обработки функциями выводит "?"
 
 Top
DelphinPRO
Отправлено: 24 Ноября, 2012 - 17:03:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)





avtor.fox пишет:
Мне не нравится [+] под фотографией :С
Я больше так не буду, простите меня

а что он означает?
сорри за оффтоп )


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
avtor.fox
Отправлено: 24 Ноября, 2012 - 17:06:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




Alex131 пишет:
прописать вашу строку перед этой или как?

avtor.fox пишет:
после подключения к базе -


Alex131 пишет:
Делал проверку данных которые загружаются с бд, текст нормально выводится, а вот после обработки функциями выводит "?"

Где делали?
 
 Top
Alex131
Отправлено: 24 Ноября, 2012 - 17:13:57
Post Id



Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




Цитата:
Где делали?

В 120 строке. Вывел массив на екран, текст отображался правильно.

Ваш код не помог, никаких изменений.
 
 Top
avtor.fox
Отправлено: 24 Ноября, 2012 - 17:19:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




Alex131
дебажте код блочно (переписывайте полностью).


DelphinPRO
"Некорректное поведение на конференции, повторение после предупреждения. Пожалуйста, будьте корректнее - особенно с новичками."
Новички, такие новички.
 
 Top
Alex131
Отправлено: 24 Ноября, 2012 - 17:21:34
Post Id



Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




это вариант, спасибо.
(Добавление)
Нашел, текст неправильно отображался после обработки функцией mb_strtolower.
Подскажите как правильно исправить, может заменить на другую функцию?
(Добавление)
сам исправил, дописал кодировку.
Тема закрыта, спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB