Forum Webscript.Ru
Программирование => Регулярные выражения => Тема начата: Phoinix от 10 Ноября 2003, 10:34:21
-
При работе с HTML несколько пробелов заменяются на & nbsp;, т.к. шаблоны я правлю из textarea, то при первоначальном занесеннии нескольких & nbsp; шаблон сохраняется нормально, но как только я пытаюсь его отредактировать через textarea все & nbsp; заменяются на пробелы, пришлось ввести UB код типа [nbsp], который в дальнейшем при сипользовании шаблона заменяется на & nbsp;, но возник вопрос если писать не так:
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]
заменяя его потом на...
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;
а так:
[nbsp:4]
заменять на...
& nbsp;& nbsp;& nbsp;& nbsp;
причем в самом строковом выражении может быть насколько блоков [nbsp:x], т.е.
[nbsp:5]текст[nbsp:7]текст[nbsp:2]текст[nbsp:5]
Возможно ли в регулярных выражениях замена [nbsp:5]на дублирование отпределенного текста определенное количество раз (в данном случае - 5)
P.S. я воткнул пробел между & и nbsp; иначе тут тоже не кажет...
-
Мдя...
Замени & на &
т.е. на  
а также " на "
< на <
> на >
при внесении в
-
ondr
Эти замены я и так произвожу... вопрос не в том, могу ли я сделать так, что бы вместо нескольких "жестких" пробелов, просто указывать их количество во время редактирования шаблона, а во время непосредственного вывода шаблона пользователям выдавать готовый код. При этом я могу фунцией выкусывать [nbsp:2] и получать количество 2, а потом дублировать "& nbsp;" нужное количество раз, но при этом, если в строковом выражении несколько [nbsp:2] я захвачу только одно.
Вопрос можно ли одним регулярным выражением получать количество, дублировать определенный текст в соответствии с количеством и производить замену... т.е. грубо говоря примерно так:
~s /\\[nbsp\\:([0-9]*)\\]/((& npsb;)*$1)/gi;
-
На держи:
s/\\[nbsp: ([0-9]*)\\]/\' \' x $1/gie; (пробел в левой части убрать)
Но что тебя не устраивало понять не могу.
-
ondr
Меня просто не устраивало, то что засорялся шаблон, и его очень неудобно было редактировать когда у тебя идет:
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp] TEXT [nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp] TEXT
вот и хотелось его привести в удобочитаемый вид:
[nbsp:8]TEXT[nbsp:8]TEXT
Спасибо...