Забыли пароль?
Запросите новый здесь.

Автор темы: Zaxap
ID темы: 911
Информация:
Тема содержит 10 сообщения, была просмотрена 5427 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Плагины
 Распечатать тему
Fusion Chat 1.0 (откуда ошибки то).
Zaxap
Хочу представить вам данный аддон: Fusion Chat 1.0...
В нем, в файле utf8_char2byte_pos, выдает ошибки на данных строчках 26 и 33...можно узнать, что там не так?
Ибо не работает функция...
Загрузить источник  GeSHi: PHP
  1. <?php
  2.  
  3. /**
  4.  * Translates a character position into an 'absolute' byte position.
  5.  * Unit tested by Kasper.
  6.  * (http://phpxref.com/xref/moodle/lib/typo3/class.t3lib_cs.php.source.html.gz)
  7.  *
  8.  * @param string UTF-8 string
  9.  * @param integer Character position (negative values start from the end)
  10.  * @return integer Byte position
  11.  * @author Martin Kutschker <martin.t.kutschker@blackbox.net>
  12.  */
  13. if (!function_exists('utf8_char2byte_pos')) {
  14. function utf8_char2byte_pos($str,$pos) {
  15. $n = 0; // number of characters found
  16. $p = abs($pos); // number of characters wanted
  17.  
  18. if ($pos >= 0) {
  19. $i = 0;
  20. $d = 1;
  21. } else {
  22. $i = strlen($str)-1;
  23. $d = -1;
  24. }
  25.  
  26. for( ; strlen($str{$i}) && $n<$p; $i+=$d) {
  27. $c = (int)ord($str{$i});
  28. if (!($c & 0x80)) // single-byte (0xxxxxx)
  29. $n++;
  30. elseif (($c & 0xC0) == 0xC0) // multi-byte starting byte (11xxxxxx)
  31. $n++;
  32. }
  33. if (!strlen($str{$i})) return false; // offset beyond string length
  34.  
  35. if ($pos >= 0) {
  36. // skip trailing multi-byte data bytes
  37. while ((ord($str{$i}) & 0x80) && !(ord($str{$i}) & 0x40)) { $i++; }
  38. } else {
  39. // correct offset
  40. $i++;
  41. }
  42.  
  43. return $i;
  44. }
  45. }
  46.  
  47. ?>
Добавлено за 0.036 секунд, используя GeSHi 1.0.8.10

Зло не дремлет, а я добрый...
 
Rush
смотря какие ошибки выдает. мне кажется дело в исходных данных, т.к. в коде ошибок не замечено. и выдаются ли ошибки? может нотисы
 
Web
Zaxap
Ну я не про, как знаете=)
------
utf8/utf8_char2byte_pos.php
Uninitialized string offset: 5 Строка: 26

utf8/utf8_char2byte_pos.php
Uninitialized string offset: 5 Строка: 33
Зло не дремлет, а я добрый...
 
Rush
это не ошибка а нотис, скрипт должен отрабатывать. ошибка происходит потому что скрипт не может получить значение $str{$i}, т.к. оно скорее всего не определено и скрипт просто вылетает за границы строки. тут надо пример данных, кусок кода где используется функция и какие данные ей передаются

в качестве примитивного решения попробуй замени strlen на isset
x1
 
Web
mishqa35
устарело но все же, зачем тут символ ; ?
Скачать исходники  Код
for( ; strlen($str{$i}) && $n<$p; $i+=$d) {



строка 26, а в 33 как раз обработчик
была бы ошибка в strlen() тогда бы и на предыдущие строки ругалось

Оффтопик PS: :D

x1
 
Web
Zaxap
Уже не очень нужно, но спасибо:З Выйдет восьмерка - возьму на заметку)))
Зло не дремлет, а я добрый...
 
Zaxap
Можно вопрос по этой древней теме? А где этот чат теперь искать? На оффе его нет, на сайте разработчика - тоже, на другом сайте разработчика (php-fusion.us) нет тоже этого чата...

Думал оптимизировать его немного (касательно лишних файлов и прочее) и поставить, а его нет нигде =_=
Зло не дремлет, а я добрый...
 
Chief
А где этот чат теперь искать?


Неужто в поиске на rusfusion забанили?

Fusion Chat 1.0, и поле профиля к нему Fusion Chat Messages User Field
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 
Vova
Zaxap написал:

Хочу представить вам данный аддон: Fusion Chat 1.0...
В нем, в файле utf8_char2byte_pos, выдает ошибки на данных строчках 26 и 33...можно узнать, что там не так?
Ибо не работает функция...
Загрузить источник  GeSHi: PHP
  1. <?php
  2.  
  3. /**
  4.  * Translates a character position into an 'absolute' byte position.
  5.  * Unit tested by Kasper.
  6.  * (http://phpxref.com/xref/moodle/lib/typo3/class.t3lib_cs.php.source.html.gz)
  7.  *
  8.  * @param string UTF-8 string
  9.  * @param integer Character position (negative values start from the end)
  10.  * @return integer Byte position
  11.  * @author Martin Kutschker <martin.t.kutschker@blackbox.net>
  12.  */
  13. if (!function_exists('utf8_char2byte_pos')) {
  14. function utf8_char2byte_pos($str,$pos) {
  15. $n = 0; // number of characters found
  16. $p = abs($pos); // number of characters wanted
  17.  
  18. if ($pos >= 0) {
  19. $i = 0;
  20. $d = 1;
  21. } else {
  22. $i = strlen($str)-1;
  23. $d = -1;
  24. }
  25.  
  26. for( ; strlen($str{$i}) && $n<$p; $i+=$d) {
  27. $c = (int)ord($str{$i});
  28. if (!($c & 0x80)) // single-byte (0xxxxxx)
  29. $n++;
  30. elseif (($c & 0xC0) == 0xC0) // multi-byte starting byte (11xxxxxx)
  31. $n++;
  32. }
  33. if (!strlen($str{$i})) return false; // offset beyond string length
  34.  
  35. if ($pos >= 0) {
  36. // skip trailing multi-byte data bytes
  37. while ((ord($str{$i}) & 0x80) && !(ord($str{$i}) & 0x40)) { $i++; }
  38. } else {
  39. // correct offset
  40. $i++;
  41. }
  42.  
  43. return $i;
  44. }
  45. }
  46.  
  47. ?>
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10


Я протестировал. У меня без ошибок.

echo utf8_char2byte_pos("гта",1);

Выдало 2 позицию.
 
Web
Zaxap
Chief, да ну вас нахрен! Это чат Craig'а, а я про давнишний чат NetriX'а, если не ошибаюсь, который также называется, как я заметил =_=
/умники...дату создания темы глянули быad /ну никто не глянет, конечно же//
Зло не дремлет, а я добрый...
x1
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: