Общие > Веб-технологии
Тег code
DELirium:
Приведённый код не работает, или у меня в конец кривые руки.
Вообще я написал немного кода и он вполне великолепно работает:
$in=текст
$in2=$in
while ($in2 =~ s|\\*?)\'\\]([^\\[\\]]*?)\\[\\/url\\]|$2|g){}# Проверка на то написанно ли всё правильно.
while ($in2 =~ s|\\[(\\w)\\]([^\\[\\]]*?)\\[\\/\\1\\]|$2|g){}# Проверка на то написанно ли всё правильно.
if (($in2 =~ m/\\[(b|i|u|quote|code|url|mail)\\]/) || ($in2 =~ m/\\[\\/(b|i|u|quote|code|url|mail)\\]/))
{print"-----\\n$in2\\n-----";$in=\'\'}
$in =~ s/\\[b\\]//g;$in =~ s/\\[\\/b\\]//g;
$in =~ s/\\[u\\]//g;$in =~ s/\\[\\/u\\]//g;
$in =~ s/\\[i\\]//g;$in =~ s/\\[\\/i\\]//g;
$in =~ s/\\[i\\]//g;$in =~ s/\\[\\/i\\]//g;
$in =~ s|\\[mail\\]([^\\[\\]]*?)\\[\\/mail]|$1|g;
$in =~ s|\\[url=\'([^\']*?)\'\\]([^\\[\\]]*?)\\[\\/url]|$2|g;
$in =~ s/\\[quote\\]/\\\\\\/g;
$in =~ s/\\[\\/quote\\]/\\\\\\/g;
Конечно "немного" убого, но работате.
Проблема в другом:
Необходимо чтобы внутри тега code вообще ничего не менялось. А если я добавлю строку:
$in =~ s/\\[code\\]//g;$in =~ s/\\[\\/code\\]//g;
то внутри тега code все спец символы заменятся, а мне этого совершенно не надо :(
p.s. А может у скобок [] есть альтернативное написание, как у< => <
Secandr:
как плохо работать двоим за одним компом :(
dymka:
я делал подобную фишку но немного по-другому:
я создавал хеш-массив преобразований:
code=>\'VALUE\',
url => \'VALUE\'
итп...
а потом вызывал функцию, которая все что внутри тегов
[ url ]http://some_host[ /url ]
преобразовывало согласно правилам...
если нужно могу поискать и попробывать прогнать твой примерчик, если пройдет то выложу
P.S.: сорри, немного неправильно понял проблему :) бум думать, мне такое тоже пригодится
Secandr:
Я придумал:
я внутри блока [ code]заменю все [ на
YA:
DELirium, а чего не работает? Если внутри [] допускаются пробелы, добавь после \\[ и перед \\] \\s*
Навигация
Перейти к полной версии