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

Форум PHP

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

 

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

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

тема: Генерация ключевых слов. проблемы с кодировкой.
 
 автор: vorobey   (31.07.2010 в 04:03)   письмо автору
 
 

<? 
if (isset($title) || isset($description) || isset($content))
    {
        
$text=$content;
        
        function 
keywords($text,$wordlength,$many_key
            {
                
$text=strtolower(strip_tags($text));
$text=iconv('cp1251','UTF-8',$text);
                
preg_match_all("/[а-яa-z]{".$wordlength.",}+/is",$text,$word);
                
$return array_count_values($word[0]);
                
arsort($return);
                
$return array_slice($return,0$many_key);
                
$return array_keys($return);
                return 
$return;
            }  
$text=iconv('UTF-8','cp1251',$text);
        
$rezult1=keywords($text,5,5);
        
$keywords=implode(',',$rezult1);
echo 
"<pre>";print_r($rezult1);echo "</pre>";
        if(isset(
$title,$keywords,$description,$content))
            {     

            
$resultmysql_query("INSERT INTO content SET title='".$title."',keywords='".$keywords."',description='".$description."',content='".$content."' ");

                 if(
$result=='true')  { echo"Ура добавлено<br>" 
                            echo 
"<HTML><HEAD>
                 <META HTTP-EQUIV='Refresh' CONTENT='6; URL=/index.php '>
                 </HEAD><body></body>"
;}
                    else{ 
                                echo
"<br> НЕ  добавлено";
                            }
            }
                else{
                            echo
"вы ввели НЕ ВСЮ информацию"
                        }
?>

Работает, генирирует Но!
если английский текст добавить это echo "<pre>";print_r($rezult1);echo "</pre>"; выводит ключевые слова как надо, но в базу не заносит.
Если русский текст ввести выводит
Array
(
    [0] => для
    [1] => данн&#65533;
    [2] => амми&#65533;
    [3] => зова&#65533;
    [4] => ог&#65533;
)
и заносит в базу где то с серидины массива.
Все файлы utf-8 и база тоже. Ничего не пойму почему так ?

ps в нижнем участке кода в место &#65533; шестиугольник с вопросом ).

  Ответить  
 
 автор: sms-send   (31.07.2010 в 05:35)   письмо автору
 
   для: vorobey   (31.07.2010 в 04:03)
 

Что за шаманство с кодировкой?
Для многобайтных кодировок есть mb_strtolower. В регулярное выражение для работы с UTF-8 нужно добавить модификатор "u". Функция mysql_query никогда не вернёт строку "true". А запрос может не всегда работать из-за того, что вы не правильно его формируете.

  Ответить  
 
 автор: vorobey   (31.07.2010 в 18:16)   письмо автору
 
   для: sms-send   (31.07.2010 в 05:35)
 

За "u" спасибо. добавил
preg_match_all("/[а-яa-z]{".$wordlength.",}+/isu",$text,$word);
и все стало генерироватся и заносится в базу, но только русский текст. Если английский, то слова генерируются, а в базу не заносятся. Тоже происходит и со смесью двух языков- не заносится.
Если убрать те шаманства с кодировкой - выводит array() , но если их менять местами то им по барабану.
действительно шаманство.
mb_strtolower - не могу понять как ее применить?
самое интересное почему нормально сгенирированные английске слова не заносит в базу?
mysql_query("INSERT INTO blog (title,keywords,description,content) VALUE ('$title','$keywords','$description','$content') ");


ps решил проблему
перед записью в базу переменные поместил в mysql_escape_string.

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

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