1 (изменено: san125, 2012-04-30 14:37:36)

Тема: не работает скрипт

скрипт :

<?php
header('Content-Type: text/html; charset=koi8-r');

class sd_keywords
{
var $word_length_min=3;// минимальное слово
var $words_count=10;// количество ключевых слов
var $meta=false;// true - возвращает готовый мета тег, иначе будет массив

function keywords($_text)
{ $search=array ("'ё'",
  "'<script[^>]*?>.*?</script>'si", // Вырезается javascript
  "'<[\/\!]*?[^<>]*?>'si", // Вырезаются html-теги
  "'([\r\n])[\s]+'", // Вырезается пустое пространство
  // Замещаются html-элементы
  "'&quot;'i", "'&amp;'i","'&lt;'i","'&gt;'i","'&nbsp;'i",
  "'&iexcl;'i","'&cent;'i","'&pound;'i","'&copy;'i","'&#(\d+);'e");
  $replace=array('е',' ',' ',"\\1 ",'" ',' ',' ',' ',' ',
  chr(161),chr(162),chr(163),chr(169),"chr(\\1)");

  $text=preg_replace($search,$replace,$_text);// избавляемся в тексте от всякой html фигни
  // по каким то причинам жопы в preg_match_all приходится извращаться с кодировкой
  // отбираем из текст слова (из кодирвоки cp1251)
  preg_match_all("#(\w+)#si",iconv('UTF-8','cp1251',$text),$words_all);
  // массив стоп слов, которые включать по любасу не нужно
  $words_stop=array('','как','для','что','или','это','этих','всех','вас',
  'они','оно','еще','когда','где','эта','лишь','уже','вам','нет','если','надо','все',
  'так','его','чем','при','даже','мне','есть','раз','два','аля','нас','тем','через','многие','многое');
  $kk=array(); $cc=array(); $ii=0;// временные переменные
  $words_count=sizeof($words_all[0]);// узнаем общее количество слов в тексте
  //echo $words_count;
  //echo $_text;
  for($it=0;$it<$words_count;$it++)// пройтись по всем словам
  { // преобразуем все к маленькому регистру, ибо поисковички все равно регистры не отличают
    $val_win=strtolower($words_all[0][$it]);

    $len=strlen($val_win);// определяем длину слова
    // если слово меньше минимума, то не включаем в список подсчета
    if ($len<$this->word_length_min) { continue; }

    $val_utf=iconv('cp1251','UTF-8',$val_win);// конвертируемся обратно в utf
    
    // если слово является стоп словом, то не включаем в нужный список
    if (array_search($val_utf,$words_stop)) { continue; }

    $id=array_search($val_utf,$kk);// проверка на наличие слова уже в списке
    if ($id>0)// если в списке уже есть, то
    { $cc[$id]++;// увеличиваем количество
    }
    else// если нет в списке
    { $kk[$ii]=$val_utf;// записываем слово
      $cc[$ii]=1;// кол-во в тексте
      $ii++;
    }
  }
  // преобразуем весь результат к единому массиву
  $c=sizeof($kk); for($it=0;$it<$c;$it++) { $ww[$kk[$it]]=$cc[$it]; }

  arsort($ww);// сортируем массив по кол-ву слов
  $keywords=array();
  $it=0;
  foreach ($ww as $val=>$key)
  { if ($it>=$this->words_count) { break; }
    $keywords[$it]=$val;
    $it++;
  }
  if ($this->meta)
  { $c=sizeof($keywords);
    $r='<meta name="keywords" content="';
    for($it=0;$it<$c;$it++)
    { if (($it+1)==$c) { $r.=$keywords[$it]; } else { $r.=$keywords[$it].', '; }
    }
    $r.='" />';
  }
  else
  { $r=$keywords;
  }
  return $r;
}
}// конец объекта

$text = $_POST['text'];
$words=new sd_keywords();
$words->meta=true;
echo $words->keywords($text);

?>

скрипт должен выбирать из текста ключевые слова
с английским текстом работает -  с русским нет. Помогите !!!

2

Re: не работает скрипт

Какие входные данные? Что должно быть и что получается?

Проверьте кодировку файла скрипта. Зачем нужно перекодирование я понять не смог.

3

Re: не работает скрипт

Hanut сказал:

Какие входные данные? Что должно быть и что получается?

Проверьте кодировку файла скрипта. Зачем нужно перекодирование я понять не смог.

а это разве не кодировка скрипта -
header('Content-Type: text/html; charset=koi8-r');

4

Re: не работает скрипт

Я имел в виду сам файл в UTF-8 или в ANSI. Хотя зачем отправлять данные скрипта в kio8-r, а внутри перекодировать Юникод в windows-1251 и наоборот - я совсем не понял.

5 (изменено: san125, 2012-05-06 21:56:20)

Re: не работает скрипт

не получается исправить. plees help.

6

Re: не работает скрипт

Разберитесь с кодировками. Я не смогу помочь, если вы сами не знаете в какой кодировке у вас скрипт и данные.

7

Re: не работает скрипт

Hanut сказал:

Разберитесь с кодировками. Я не смогу помочь, если вы сами не знаете в какой кодировке у вас скрипт и данные.

у меня  кодировка - koi8-r

8

Re: не работает скрипт

san125 сказал:

у меня  кодировка - koi8-r

Кодировка чего?

Вышлите скрипт на hanut@php-myadmin.ru со ссылкой на эту тему.

9

Re: не работает скрипт

Помогите разобраться написал функции проверки вводимых пользователем данных на JavaScript  сохранил как отдельный файл подключаю его в html все работает только сообщения на русском почему то не коректно отображаются что нужно делать?как в javascript кодировку установить

10

Re: не работает скрипт

kuba1981 сказал:

как в javascript кодировку установить

Проверьте, чтобы кодировки html и .js файла совпадали. Проще всего это сделать в Notepad++, где в строке статуса будет указана кодировка файла UTF8 или ANSI. В случае необходимости, файл можно перекодировать там же.

11

Re: не работает скрипт

Помогите разобраться
params="url=oreilly.com"
request=new ajaxRequest()
request.open("POST","urlpost.php",true)
request.setRequestHeader("Content-type","application/x-www-form-urlencoded")
request.setRequestHeader("Content-length",params.length)
request.setRequestHeader("Connection","close")

request.onreadystatechange=function()
{
if (this.readyState==4)
   {
     if (this.status==200)
        {
          if (this.responseText !=null)
            {
              document.getElementById("info").innerHTML=this.responseText
            }
          else alert ("Ошибка Ajax: Данные не получены")
        }
     else alert ("Ошибка Ajax:"+this.statusText+this.readyState+"-"+this.status)
   }

}
request.send(params)
Свойство readyState=4 ,а вот status=0 ПОЧЕМУ??? должно же быть 200 не работает ни в одном браузере пример из учебника

12

Re: не работает скрипт

kuba1981 сказал:

Свойство readyState=4 ,а вот status=0 ПОЧЕМУ?

Мне не понятна эта строка:
request=new ajaxRequest()

Посоветую пример отсюда: https://developer.mozilla.org/en/AJAX/Getting_Started
А еще лучше - сразу работать с jQuery: http://api.jquery.com/category/ajax/

13

Re: не работает скрипт

вот полностью скрипт эта функция ajaxRequest() создает объект ПРОСТО хотелось бы разобраться почему не работает
<html>
<head>
<title>Пример использования Ajax</title>
</head>

<body>
<h1>Загрузка веб-страницы в контейнер DIV</h1>
<div id="info">Это предложение будет заменено</div>

<script language="JavaScript">
<!--
params="oreilly.com"
request=new ajaxRequest()
request.open("POST","urlpost.php",true)
request.setRequestHeader("Content-type","application/x-www-form-urlencoded")
request.setRequestHeader("Content-length",params.length)
request.setRequestHeader("Connection","close")

request.onreadystatechange=function()
{
if (this.readyState==4)
   {
     if (this.status==200)
        {
          if (this.responseText !=null)
            {
              document.getElementById("info").innerHTML=this.responseText
            }
          else alert ("Ошибка Ajax: Данные не получены")
        }
     else alert ("Ошибка Ajax:"+this.statusText+this.readyState+"-"+this.status+"-"+this.responseText)
   }

}
request.send(params)

function ajaxRequest()
{
try
{
  var request=new XMLHttpRequest()
}   
catch(e1)
{
try
{
  request=new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e2)
{
try
{
request=new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e3)
{
request=false
}
}
}
return request
}
-->
</script>
</body>
</html>
и извените за глупый вопрос просто недавно всем этим начал заниматься и учу все по книгам действительно не нужен Ajax можно изучать JQuery? функциональность одна и та же?

14

Re: не работает скрипт

kuba1981 сказал:

действительно не нужен Ajax можно изучать JQuery? функциональность одна и та же?

jQuery - это стандартная библиотека для работы с JavaScript, в которой реализована удобная работа с Ajax.

По коду я ошибки не вижу, но запустить его для проверки не могу. Попробуйте убрать строку:

request.setRequestHeader("Connection","close")

Я не вижу в ней необходимости.

Насколько правильно работает Ajax можно посмотреть в Firefox используя расширение Firebug.

15

Re: не работает скрипт

Убрал строку все равно не работает в поисковиках конкретного ответа тоже не нашел sad  и почему то statusText не возращает строку ошибки???

16

Re: не работает скрипт

kuba1981 сказал:

Убрал строку все равно не работает в поисковиках конкретного ответа тоже не нашел

Надо смотреть в Firebug отладку. Я так по коду подсказать не смогу.