Автор Тема: Нужно поменять окончание тэгов + \\n на только окончание тэгов. Не выходит.  (Прочитано 4515 раз)

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

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Я пробовал так:
$content preg_replace(\'#([\\/]?.*?)>\\n#is\', "\\n", $content);
Всё из-за того, что ниже стоит ещё нужный
$content = \'\' . str_replace("\\n", "\\n
\\n", $content);

Думааю, поннятно зачем нижний реплейс, а вот верхний нужен для того, чтобы такие данные в базе как эти


 
   
   
   

сидели на месте.
Ведь неудобно неразделять строчки. А вот мне нужно реплейсить каждый закрывающий тэг ">" с "\\n" на ">".
Как организовать? #([\\/]?.*?)>\\n ...?
« Последнее редактирование: 25 Августа 2002, 16:54:09 от Гаррилл »

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Ой-ё. Так, первого сенятбря все в школу - русский язык учить.
Сначал я долго думал, что означает загадочное слово
Цитировать
njkmrj
, пока не посмотрел на клаву и не понял, что это "только".
Тебе нужно, чтобы производилась замена, напр., \\n на просто ?
Тогда так

$content 
preg_replace("!(<[^>]+>)\\\\n!""\\\\\\\\1"$content);
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Цитировать
njkmrj

:D поменял.
Такой способ не выходит.
Цитировать
Тебе нужно, чтобы производилась замена, напр., \\n на просто ?

Не совсем так. Нужно, чтобы и "border="1" width="100%">\\n" менялся на "border="1" width="100%">"
Т.е. всё ">\\n" менялось на ">".

Т.к. при постинге ставить такую фигню как расширенный, не расширенный режимы форматирования если ставить, то выйдет криво. А тут конструкцию придумать не могу.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Гаррилл
Ты сам только что на свой вопрос ответил:
$string = str_replace(">\\n",">",$string);
Цитировать

[Editor\'s note: see also nl2br(), a function that does exactly this]
If you want to make it really HTML friendly with the formatting intact use:
$text = str_replace("\\n","
",$text);
AS IS...

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Цитировать
$string = str_replace(">\\n",">",$string);

Не работает.
Цитировать
$text = str_replace("\\n","
",$text);

Это и пню понятно. В остальных случаях $content = \'\' . str_replace("\\n", "\\n
\\n", $content); нужно для обычных абзацев с помощью "Enter", а не
. Не надо этой замены только в том случае, когда \\n стоит после завершающей скобки >.

Код выглядит так:
	
	
	
$content = ( $blocksdata[\'block_content\'] != \'\' ) ? $blocksdata[\'block_content\'] : \'\';
	
	
	
$content_bbcode_uid = $blocksdata[\'bbcode_uid\'];

	
	
	
if ( !$blocksdata[\'enable_html\'] )
	
	
	
{
	
	
	
	
$content = preg_replace(\'#(<)([\\/]?.*?)(>)#is\', "<\\\\2>", $content);
	
	
	
}

	
	
	
if ( $blocksdata[\'enable_bbcode\'] )
	
	
	
{
	
	
	
	
$content = bbencode_second_pass($content, $content_bbcode_uid);
	
	
	
}

	
	
	
if ( $blocksdata[\'enable_smilies\'] )
	
	
	
{
	
	
	
	
$content = smilies_pass($content);
	
	
	
}

	
	
	
$content = preg_replace("/\\:(([a-z0-9]:)?)$content_bbcode_uid/si", \'\', $content);

	
	
	
$content = str_replace(">\\n",">",$content);

	
	
	
$content = \'\' . str_replace("\\n", "\\n
\\n", $content);

	
	
	
$content = make_clickable($content);

	
	
	
$template->assign_vars(array(
	
	
	
	
\'BLOCK_TITLE\' => $blocksdata[\'block_title\'], 
	
	
	
	
\'BLOCK_CONTENT\' => $content
	
	
	
));


Это кусок из моего мода к phpbb. Я просто блоки туда прикрутил как у нюк, только намного круче и продуманней.
А сейчас просто мозги пришибло. Не могу эту мелочь устранить.

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Эта длинная строка в моей мессаге выше - не моя. Это замена на форуме произошла. На самом деле она такая :
$content = preg_[пробел]replace("/\\:(([a-z0-9]:)?)$content_[пробел]bbcode_uid/si", \'\', $content);

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Я и сам решил проблему
$content = preg_replace("\'([^>][\\n])+\'si","\\\\2",$content);

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Не понял....
А при чем здесь \\\\2?
PS. Модификаторы в реге ни к чему.
« Последнее редактирование: 25 Августа 2002, 19:17:19 от GotZfild »
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Цитировать
$content = preg_replace("\'([^>][\\n])+\'si","\\\\2",$content);

Блин, не работает тоже.
Как менять все ">\\n" на ">"
Помогите. Не получается ничего.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Цитировать
Как менять все ">\\n" на ">"

Может у тебя \\r\\n?
Тогда
$text = str_replace(">\\r\\n",">",$text);
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Макс
Ооо. Спасибо. Спасибо, что надоумил.
Совсем я сдурел. Четыря дня не сплю то из-за чёртового PHP :) (но как же без игрушки), то из-за похорон :(. Ну да ладно. Спасибо.
А я думал, ну какого фига не работает
$text = str_replace(">\\n",">",$text); , а \\r всё время вспоминалась и забывалась.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28