Foren / National / Russian / Cotonti 0.0.3 beta 2

ErsteVorherige123

motor2hg
#31 25. Februar 2009, 23:07
Можно так сделать если через функцию

function sed_news_strip_newpage(&$html)
{
	
	$newpage = mb_strpos($html, "newpage]");
	$titletwo = mb_strpos($html, "[/title]");

	if ($newpage !== false)
	{
		
		$html_substr = mb_substr ($html, $newpage-1, $titletwo+14);
         //$titletwo+14 because delete </br> after [newpage][title]bla bla[/title] if no need set - $titletwo+8
		$html = preg_replace('#\[title\](.*?)\[/title\][\s\r\n]*(<br />)?#i', '', $html_substr);
		//А можно так
		//$html = str_replace($html_substr, '', $html);
	}
	
	$titleone = mb_strpos($html, "title]");
	
    if ($titleone!=false)
	{
		$html_substr = mb_substr ($html, $titleone-1, $titletwo+14);
        //$titletwo+14 because delete </br> after [title]bla bla[/title] if no need set - $titletwo+8
		$html = preg_replace('#\[title\](.*?)\[/title\][\s\r\n]*(<br />)?#i', '', $html_substr);
		//А можно так
		//$html = str_replace($html_substr, '', $html);
	}

Ratibor:
Не нужно это лечить, а нужно обработку сделать на уровне парсера

Это правильное предложение.

Dieser Beitrag wurde von motor2hg (am 25. Februar 2009, 23:14, vor 15 Jahre) bearbeitet
Trustmaster
#32 26. Februar 2009, 00:16
Советую проверять факты, прежде чем делать какие-либо заявления. И читать сообщения внимательно.

Что касается вашего пуризма по поводу парсера, так вот, в 1000-й раз говорю: парсер не должен заведовать разбивкой страниц и другими структурными преобразованиями. Многостраничность должна быть на уровне данных, а не на уровне отображения. Любое другое решение является временным, где бы оно не находилось.
May the Source be with you!
motor2hg
#33 26. Februar 2009, 00:35
Ни хрена не понял, так что я ошибся? Функция, та, которая поставляется с News работает корректно? Не может быть!

Пуризм - это что?
Trustmaster
#34 26. Februar 2009, 00:58
Внимательно читать вот это:
# Trustmaster : Мы друг друга не поняли. Жаль, что никак не мог уточнить этот момент до релиза. Эта функция обрубает страницу по первому newpage и удаляет title. Потому что выводить в новостях несколько страниц разом - это явно перебор. Вот что я не учел, так это то, что еще первая страница может быть обрублена ббкодом more, и при этом тайтл останется на своем месте.

Лечится просто:
function sed_news_strip_newpage(&$html)
{
	$newpage = mb_strpos($html, '[newpage]');

	if ($newpage !== false)
	{
		$html = mb_substr($html, 0, $newpage);
	}
	
	$html = preg_replace('#\[title\](.*?)\[/title\][\s\r\n]*(<br />)?#i', '', $html);
}

И разбираться как это работает, потому что первоначальное предположение было в корне не верно.

Также внимательно читать, как работает hide. И не гипотетически, а как он работает в Cotonti.

Пуризм - от англ. pure - стремление к идеологической чистоте любыми средствами.
May the Source be with you!
motor2hg
#35 26. Februar 2009, 01:48
Вау! Это сообщение не увидел, потому как перекинуло на новую страницу! Приношу извинения!

Trustmaster:
Вот что я не учел, так это то, что еще первая страница может быть обрублена ббкодом more, и при этом тайтл останется на своем месте.

Теперь принцип работы кода понятен, подстрока либо до тега - more, либо до первого [newpage], который на самом деле определяет вторую страницу текста. И в этой подстроке делаем замену.
Всё ок!

ErsteVorherige123