Вожусь с сайтом, и возникла проблемка, когда добавляется контент на сайт, то в базе сохраняется новый материал с 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 для перевозки зубочистки