Эта тема на forum.dklab.ru


Bolt: немного функций
тогда делюсь. ,) Как и обещал. Вот несколько:

# удаление символов перевода каретки для WinNT&Unix кодировок
sub chdel {my $chdel_mem=shift; $chdel_mem=~ s/[\x0D\x0A]//g; return $chdel_mem}
# перевод строк из Esc в строку и обратно
# esc2str(<переменная со строкой>,"[символ разделитель]")
# str2esc(<переменная со строкой>,"[символ разделитель]")
sub esc2str {
my ($escstr,$escsumb) = @_; $escstr =~ s/\+/$escsumb\20/g;
$escstr =~ s/$escsumb([0-9a-fA-F]{2})/pack("c",hex($1))/ge; return $escstr;
}

sub str2esc {
my ($escstr,$escsumb) = @_; $escstr =~ s/(.)/(unpack ("H*",$1))/ge;
$escstr =~ s/(..)/$escsumb$1/g; return $escstr;
}
#Пролинковка (расставление ссылок):
sub proLinker{
my $text = shift;
$text =~ s~([^\w\"\=\[\]]|[\A\n\b])\\*(\w+://[^<>\s\n\"\]\[]+)~$1<a href="$2" target="_blank">$2</a>~isg;
$text =~ s~([^\"\=\[\]/\:]|[\A\n\b])\\*(www\.[^<>\s\n\]\[]+)~$1<a href="http://$2" target="_blank">$2</a>~isg;
$text =~ s~([^\f\"\=\[\]]|[\A\n\b])\\*(\f+://[^<>\s\n\"\]\[]+)~$1<a href="$2" target="_blank">$2</a>~isg;
$text =~ s~([^\"\=\[\]/\:]|[\A\n\b])\\*(ftp\.[^<>\s\n\]\[]+)~$1<a href="ftp://$2" target="_blank">$2</a>~isg;
$text =~ s~(\S+?)\@(\S+)~<a href="mailto:$1\@$2">$1\@$2</a>~isg;
return $text;
}
#Замена тегов
sub htmlEncode {
my $text = shift;

$text =~ s!&!&!g;
$text =~ s!>!&!g;
$text =~ s!<!&!g;
$text =~ s!\"!&!g;

return $text;
}
#Квотим HTML:
sub unHTML {
my $text = shift;
my %ENT=('<'=>'lt','>'=>'gt','"'=>'quot');
$text =~ s!([<>"])!&$ENT{$1};!g;
$text =~ s|<!--|<!--|g;
$text =~ s|-->|-->|g;
$text =~ s|<script>|<script>|ig;
$text =~ s| | &|g;
$text =~ s|^\$+$|$|g;
$text =~ s|\@|@|g;
$text =~ s!\|!|!g;
$text =~ s|\{|{|g;
$text =~ s|\}|}|g;
$text =~ s|\\,|,|g;
$text =~ s|\~|~|g;
$text =~ s|'|'|g;
$text =~ s|\n|<br>|g;
$text =~ s|\s+$||g;
$text =~ s|\$|$|g;
$text =~ s|\r||g;
$text =~ s!\\!\!g;

return $text;
}

вот, наверное и все пока. Это, можно сказать, часть I.
Enilatiar:
Лучше в виде приаттаченного файла. Ибо не факт, что все отображется так, как задумано.
$text =~ s|-->|-->|g;
Bolt:
Enilatiar:
ага, согласен. пересмотрел код - действительно «не факт». Вернее факт, «что все отображется не так, как задумано».
Дмитрий Котеров:
Глюки в форуме исправим.
Андрей Анатольич (Venom):
$text =~ s~([^\w\"\=\[\]]|[\A\n\b])\\*(\w+://[^<>\s\n\"\]\[]+)~$1<a href="$2" target="_blank">$2</a>~isg;

Ключ i лучше не писать - ибо медленно. Лучше использовать символьные классы там, где необходимо.

Эта тема на forum.dklab.ru