Помогите составить регулярку

Печать RSS
361

Автор
Пацак
0
Вообщем стулкнулся с проблемой. Есть переменная текста, если она содержит более N символов - текст обрезается, так вот, если вконце строки будет бб-код например [u] тогда его обрезает все стает подчеркнутым E че можна сделать?
C

Пришелец
0
заменять бб коды регулярными выражениями парами, хотя будет все равно некрасиво если в тексте будет [u] написано.
лучше всего обрезать строку раньше немного и проверять что не закрыто - то закрывать. Это можно без регулярки даже.
Автор
Пацак
0
лучше всего обрезать строку раньше немного
а как же я узнаю где у него в посте будет бб код?... это если попадется вконце, тогда все дальше идет выделенным.
А

Оранжевые штаны
0
посчитай открытые u и закрытые.

Пацак
0
<?php

# тут ты обрезал)

$open = substr_count($text, '[ u]');
$closed = substr_count($text, '[ /u]');

$to_closed = $open - $closed;

if ( $to_closed ) $text = $text.str_repeat('[/u]', $to_closed);

?>

как бэ вот
Изменил: DmitryDick (13.11.2010 / 13:22)
Автор
Пацак
0
Не, так не работает

Добавлено через 05:27 сек.
Во, работает, надо было <u> вместо [u] ) к этим функциям можна добавить <b>, <i> и прочие тэги чтобы по новой не писать?

Пацак
0
нет, придется по одному такому коду для каждого тега использовать. так что тут лучше регулярки =)
Автор
Пацак
0
ok)) E
В

Пацак
0
не хочю создавать тему так чо:
$msg = preg_replace('#\[blue\](.*?)\[/blue\]#si', '<span style="color:#0000ff">\1</span>', $msg);
мне нужно етое выражение зделать так чтоб вместо blue любое название подходило тоисть там где #0000ff любое название и там где то самое что там где колор
М

Пацак
0
preg_replace('#\[u\](.*)\[/u]#', '\1', $str);
выведет то, что между [u][/u]

Добавлено через 01:06 сек.
хех обрезалось) между скобками короче
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск