|
|
|
|
<?
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))
{
$result= mysql_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] => данн�
[2] => амми�
[3] => зова�
[4] => ог�
)
| и заносит в базу где то с серидины массива.
Все файлы utf-8 и база тоже. Ничего не пойму почему так ?
ps в нижнем участке кода в место � шестиугольник с вопросом ). | |
|
|
|
|
|
|
|
для: vorobey
(31.07.2010 в 04:03)
| | Что за шаманство с кодировкой?
Для многобайтных кодировок есть mb_strtolower. В регулярное выражение для работы с UTF-8 нужно добавить модификатор "u". Функция mysql_query никогда не вернёт строку "true". А запрос может не всегда работать из-за того, что вы не правильно его формируете. | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|