nl2br исключая содержание тега textarea

ArdWar

Новичок
nl2br исключая содержание тега textarea

Есть примерно следующий текст:
aaaaaaaaaa
bbbbbbbbbbb
cccccccccccccccc
<textarea>
zzzzzzzzzzzzzz
xxxxxxxxxxxxxxxx
wwwwwwwwwwww
</teaxarea>
ddddddddddd
eeeeeeeeeeeee
fffffffffffffffffffffffffff

Записано это в БД. Потом считано в переменную.

Потом это все выводится на экран.
если применить nl2br(), то внутри текстареи будут тоже <br />, что мне не нужно. Какие есть варианты?

Была идея с регулярным выражением, но не знаю можно ли сделать так, применить nl2br ко всему тексту, исключая содержимое тегов <textarea>?
Заранее спасибо =)
 

Фанат

oncle terrible
Команда форума
можно.
но не пояснишь ли ты, каким образом в тексте у тебя образовалась текстария?
 

ArdWar

Новичок
Все просто.
Это все не просто так. вот посмотри
http://2pik.com/article/2/8.html
Там идет текст статьи. Внутри статьи идет текстареа с php кодом.
Вот заэтим там и текстареа.
Есть другие варианты отображения php кода? На данный момент приходится ручками <br> прописывать каждой строке, не считая содержимого текстареи.
 

Фанат

oncle terrible
Команда форума
например, сделать нормальные псевдотеги для выделения пхп-кода, и парсить код в них через highlight_string()
 

ArdWar

Новичок
это отпадает. на сайте убого будет выглядеть тег <code> ибо там ширина страницы фиксированна.
сейчас пробовал вот это
PHP:
function Highlight($code)
	{
	ob_start();
	highlight_string(stripslashes($code));
	return("<code>".ob_get_clean()."</code>");	
	}

$cont=preg_replace("#<code>(.+?)</code>#ise","Highlight('\\1')",$cont);
и что-то не получилось.

-~{}~ 06.12.05 22:28:

Вопрос всеравно открыт.
Как во всех строчках , кроме например внутри тэга [ code ] и [ /code ] примении функцию nl2br??
ау =)
С подсветкой разобрался.
 

sakon

П..и.н..ок
Интересно. Если не секрет, то как разобрался с подсветкой?
 

ArdWar

Новичок
PHP:
function highlight_string2($code)
	{
	$z =highlight_string(stripslashes($code), true);
    return $z;
	}

		$q['content'] = preg_replace ("/(\[code])(.+)(\[\/code])/Use", "'<hr>'.highlight_string2('\\2', true) . '<hr>'",$q['content']);
-~{}~ 06.12.05 22:53:

Немного поразмышлял и понял
PHP:
$q['content'] = preg_replace ("/(\[\/code])(.+)(\[code])/Use", "nl2br('\\2')",$q['content']);
Осталось написать ругулярные выражения для:
-Начало текста и до
Код:
-
и до конца текста если отсуствует после него
Код:
Кто поможет?
 

Фанат

oncle terrible
Команда форума
в отформатированном highlight_string коде отсутствуют перводы строк.
то есть, прблемы с ними там и нету
 

ArdWar

Новичок
Я про то, что мне ОБЯЗАТЕЛЬНО нужно применить nl2br() к тексту, но как-то надо избежать применение этой функции к коду, который наодится между тегами [code ] и [/ code ]
 

Фанат

oncle terrible
Команда форума
а я про то, что куоду, который находится между [code ] и [/ code ] , абсолютно по барабану, применишь ты к нему
nl2br() , или нет
 

ArdWar

Новичок
после nl2br внутри тегов [ code ] в конце каждоый строки появляется < br />
 

ArdWar

Новичок
Я не туповат. вот смотри. Сейчас применю ко всему тексту статьи функцию nl2br()
Потом подсветку синтаксиса к тегам [ code ]

http://2pik.com/article/2/8.html

Вот там теперь смотри что с цветным текстом стало =)))
 

ArdWar

Новичок
Поменял местами. Теперь цветной текст после каждой строки имеет пустую строку.

-~{}~ 06.12.05 23:34:

Там расцветка кода сама нечто типа <br> вставляет
 

Фанат

oncle terrible
Команда форума
значит, неправильно подсвечиваешь.
у меня никаких переносов строк в коде нету
 

ArdWar

Новичок
highlight_string(stripslashes($code), true);
так пойдет подсвечивать? или нет?
 

Фанат

oncle terrible
Команда форума
мда, виноват, это я торможу.
а раньше, мне казалось, она всё в одну строчку лепила...

-~{}~ 06.12.05 23:46:

тогда можно либо после подсветки самому переводы строки убрать, либо да - рег дописывать.
 
Сверху