Array to string conversion

Автор ES.^, 03 сентября 2013, 19:17:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ES.^

8: Array to string conversion
Файл: /home/.../domains/.../public_html/Sources/Subs.php
Строка: 2382



2368:
	
	
	
elseif (
$tag['type'] == 'unparsed_content')
2369:
	
	
	
{
2370:
	
	
	
	
$pos2 stripos($message'[/' substr($message$pos 1strlen($tag['tag'])) . ']'$pos1);
2371:
	
	
	
	
if (
$pos2 === false)
2372:
	
	
	
	
	
continue;
2373:
	

2374:
	
	
	
	
$data substr($message$pos1$pos2 $pos1);
2375:
	

2376:
	
	
	
	
if (!empty(
$tag['block_level']) && substr($data06) == '<br />')
2377:
	
	
	
	
	
$data substr($data6);
2378:
	

2379:
	
	
	
	
if (isset(
$tag['validate']))
2380:
	
	
	
	
	
$tag['validate']($tag$data$disabled);
2381:
	

==>
2382:
	
	
	
$code strtr($tag['content'], array('$1' => $data));
2383:
	
	
	
	
$message substr($message0$pos) . "\n" $code "\n" substr($message$pos2 strlen($tag['tag']));
2384:
	

2385:
	
	
	
	
$pos += strlen($code) - 2;
2386:
	
	
	
	
$last_pos $pos 1;
2387:
	

2388:
	
	
	
}



Поиск не дал результатов. На офф. сайте нашел пару тем. Говорят что это из-за youtube bb-code, но как исправить ошибку не говорят или я не понял.

Использую YouTube BBCode v2.6(ссылка на офф. сайт).

ES.^


ES.^



ES.^


Gnostis

Проблема кроется в моде YouTube BBCode
строку
$code = strtr($tag['content'], array('$1' => $data));
заменяем на
$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));

Пока полет нормальный  uglystupid

ES.^

Цитата: Gnostis от 16 декабря 2013, 14:37:14
Проблема кроется в моде YouTube BBCode
строку
$code = strtr($tag['content'], array('$1' => $data));
заменяем на
$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));

Пока полет нормальный  uglystupid
В каком это файле?

Gnostis


ES.^

Цитата: Gnostis от 16 декабря 2013, 15:00:42$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));
Благодарю. Вроде бы нормально работает.

ES.^

Что то не то... Не работают code и img BB коды из-за
$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));

Gnostis

Цитата: ES.^ от 17 декабря 2013, 21:59:23
Что то не то... Не работают code и img BB коды из-за
$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));
еще есть проблема с тегом HTML, как будет время разберусь...

Gnostis

Сложное решение, но рабочее и ни чего не рушит.

в Subs.php находим:
      array(
            'tag' => 'youtube',
            'type' => 'unparsed_content',
            'validate' => create_function('&$tag, &$data, $disabled', '
               // Access globals
               global $txt, $context;
               // Determine which variable is the link
....

и полностью всю функцию обработки заменяем то что находится во вложении.

p.s. функция большая, всю описывать не стал.



remingtone

спасибо, добрый человек! но по урлам с &wap2 в конце ошибки все равно сыплет...

Gnostis

Цитата: okk от 09 января 2014, 22:30:40
спасибо, добрый человек! но по урлам с &wap2 в конце ошибки все равно сыплет...
Ошибку повторить не удалось.

В WAP версии у меня вообще не работает плагин, возвращает вида:
0 http://www.youtube.com/watch?v=...

Хотя так не должно быть, надо подумать.

Процитируйте код вашей ошибки.

remingtone

я вышел из положения другим путем. задав себе вопрос: а нафига мне тег youtube, если установлена галерея?
другое дело, что на php 5.4 за ночь появляется сотня записей 404 по поводу вложений. хттп://сайт.ком/%3faction=dlattach;... если заменить %3f на ? в адресной строке - то все работает нормально

1q2w3e

Цитата: Gnostis от 18 декабря 2013, 10:07:22
Сложное решение, но рабочее и ни чего не рушит.

в Subs.php находим:
      array(
            'tag' => 'youtube',
            'type' => 'unparsed_content',
            'validate' => create_function('&$tag, &$data, $disabled', '
               // Access globals
               global $txt, $context;
               // Determine which variable is the link
....

и полностью всю функцию обработки заменяем то что находится во вложении.

p.s. функция большая, всю описывать не стал.




Извините, но ваша функция во вложенном файле ничем не отличается от стандартной мода YouTube BBCode 2.5.1 для форумов 1.1.x. Вы точно нужный файл выложили?

karavan

#16
Цитата: Gnostis от 18 декабря 2013, 10:07:22Сложное решение, но рабочее и ни чего не рушит.
Форум не работает после такой правки. Та же проблема, после перехода на php 5.5 при загрузке любой темы с роликами YouTube появляется ошибка

Array to string conversion
Файл: /www/forum/Sources/Subs.php
Строка: 2447

в то же время все работает, несмотря на запись ошибки в логах.

ПС. смотрел на simplemachines.org, там единственный совет это удалить мод YouTube BBCode :facepalm: ничего другого придумать не могут.

karavan

Проблема решилась заменой YouTube BBCode на Ohara YouTube Embed http://custom.simplemachines.org/mods/index.php?mod=3268, пока разбираюсь с его нюансами, но в любом случае ошибка Array to string conversion исчезла.

GeorG

Цитата: karavan от 02 января 2015, 02:06:07Проблема решилась заменой YouTube BBCode на Ohara YouTube Embed http://custom.simplemachines.org/mods/index.php?mod=3268, пока разбираюсь с его нюансами, но в любом случае ошибка Array to string conversion исчезла.
Если что, там глюк с ссылками, черный экран - http://www.simplemachines.org/community/index.php?topic=462968.msg3771020#msg3771020 (разработчик признал, но всё же отмазался).
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Сапожник

#19
Цитата: GeorG от 08 января 2015, 09:11:43
Если что, там глюк с ссылками, черный экран - http://www.simplemachines.org/community/index.php?topic=462968.msg3771020#msg3771020 (разработчик признал, но всё же отмазался).
Я ему на днях помог решить данную проблему. Наверное не совсем квалифицированно (я просто вырезал кусок ссылки "feature=player_embedded") но оно работает... Я не понимаю регулярные выражения и у меня от них глаза разбегаются )))))
Если подскажешь более правильное решение, думаю, многие будут благодарны ;)

Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

karavan

Цитата: GeorG от 08 января 2015, 09:11:43Если что, там глюк с ссылками, черный экран
Да, черный экран был для ссылок которые имели в своей структуре часть feature=player_embedded&v
Цитата: GeorG от 08 января 2015, 09:11:43(разработчик признал, но всё же отмазался).
Ага, сказал что будет исправлять только уже для SMF 2.1 :D
Цитата: Сапожник от 09 января 2015, 01:39:31но оно работает...
Работает и не жужжит O0

GeorG

Цитата: Сапожник от 09 января 2015, 01:39:31я просто вырезал кусок ссылки "feature=player_embedded"
Этот кусок, если копировать ссылку прямо с окна видео, если же перейти на страницу видео и скоприровать ссылку с адресной строки, то этого куска как раз нет.
Но в моде заявлено что работает с этим "куском", т.е., имеется возможность брать ссылки прямо с окна видео.

Цитата: Сапожник от 09 января 2015, 01:39:31Я ему на днях помог решить данную проблему. Наверное не совсем квалифицированно (я просто вырезал кусок ссылки "feature=player_embedded") но оно работает...
В смысле подсказали очевидное, просто убирать этот кусочек? Думаю он и сам это знал ;)

З.ы. Кстати, в моде YouTube BBCode, как раз работает с этим "кусочком". Ну да не суть, исправит же потом...
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

karavan

Да, я понял что надо убирать но объяснить это всем пользователям невозможно было... Мне Сапожник файл поправил по FTP ошибочный и теперь все само работает, ничего убирать не нужно. O0

romashkin

решил проблему костылем, если кому нибудь будет интерестно
if (gettype($data) == "array"){
$code = strtr($tag['content'], array('$1' => $data[0], '$2' => $data[1]));
}
else {
$code = strtr($tag['content'], array('$1' => $data));
}