[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поместить объект в объект
McLotos
Добрый день!
Вожусь с сайтом, и возникла проблемка, когда добавляется контент на сайт, то в базе сохраняется новый материал с bb-кодами, чтобы привести его в адекватный вид, я использую такой код:
bbreplace
preg_match('#\['.$_SESSION['lang'].']*\](.+)\[/'.$_SESSION['lang'].'\]#U', $string, $m);
$str_search = array(
"#\\\n#is",
"#\[p\](.+?)\[\/p\]#is",
"#\[b\](.+?)\[\/b\]#is",
"#\[i\](.+?)\[\/i\]#is",
"#\[u\](.+?)\[\/u\]#is",
"#\[code\](.+?)\[\/code\]#is",
"#\[url=(.+?)\](.+?)\[\/url\]#is",
"#\[url\](.+?)\[\/url\]#is",
"#\[img\](.+?)\[\/img\]#is",
"#\[size=(.+?)\](.+?)\[\/size\]#is",
"#\[color=(.+?)\](.+?)\[\/color\]#is",
"#\[list\](.+?)\[\/list\]#is",
"#\[listn](.+?)\[\/listn\]#is",
"#\[\*\](.+?)\[\/\*\]#"
);
$str_replace = array(
"<br />",
"<p>\\1</p>",
"<b>\\1</b>",
"<i>\\1</i>",
"<span style='text-decoration:underline'>\\1</span>",
"<code class='code'>\\1</code>",
"<a href='\\1'>\\2</a>",
"<a href='\\1'>\\1</a>",
"<img src='\\1' alt = 'Изображение' />",
"<span style='font-size:\\1%'>\\2</span>",
"<span style='color:\\1'>\\2</span>",
"<ul>\\1</ul>",
"<ol>\\1</ol>",
"<li>\\1</li>",
);

$result = preg_replace($str_search, $str_replace, $m[1]);
$result = mb_convert_encoding($result, 'HTML-ENTITIES', 'utf-8');

Эта часть работает прекрасно, но возвращает строку, а это плохо, потому-что мой шаблонизатор, получив html-код в виде строки, просто выводит его на страницу как есть (вместе с тегами)
Я чуть-чуть переделал этот код, чтобы он возвращал объект
измененная часть
 $result = preg_replace($str_search, $str_replace, $m[1]);
$result = mb_convert_encoding($result, 'HTML-ENTITIES', 'utf-8');
$content = new DOMDocument();
$content -> formatOutput = true;
$content -> encoding = 'UTF-8';
$content -> loadHTML($result);
return $content -> childNodes -> item(1) -> childNodes -> item(0) -> childNodes -> item(0);

Результат работы этой функции сохраняется как часть массива параметров.
Когда шаблонизатор доходит до этого элемента массива, то он ругается
"Can't use method return value in write context in"
Вот сама строка
//item($k) это позиция куда нужно встроить код
//$this->vars[$elem->childNodes->item($k)] сам встраиваемый DOM-код

$elem -> childNodes -> item($k) = $this -> vars[$elem -> childNodes -> item($k) -> nodeValue];

Подскажите как заставить его работать?
Мне просто нужно чтобы имеющийся DOMкод был вставлен в нужную часть шаблона
Пробовал через appendChild но тоже ничего не получилось =(

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.