#naana::String.pm (2007/06/22) #Copyright(C) 2002-2007 naana, All rights reserved. package naana::String; use strict; ### コンストラクタ sub new { my $class = shift; my $self = { string => shift }; bless $self, $class; return $self; } ### 一行データ作成 sub create_line { my $self = shift; $self->{string} =~ s/^\s+//; $self->{string} =~ s/\s+$//; $self->{string} =~ s/\t//g; $self->{string} =~ s/\r//g; $self->{string} =~ s/\n//g; $self->{string} =~ s/
//g; return $self->{string}; } ### 複数行データ作成 sub create_text { my $self = shift; $self->{string} =~ s/\t//g; $self->{string} =~ s/\r?\n/\r/g; $self->{string} =~ s/^\r+//; $self->{string} =~ s/\r+$//; $self->{string} =~ s/\r/
/g; return $self->{string}; } ### 数値データ作成 sub create_number { my $self = shift; $self->{string} = int($self->{string}); return $self->{string}; } ### プレーンデータ作成 sub create_plain { my $self = shift; $self->{string} =~ s/\r?\n/\n/g; $self->{string} =~ s/
/\n/g; return $self->{string}; } ### リンク作成 sub create_link { my $self = shift; my $attribute = shift; if ($attribute) { $attribute = " $attribute"; $attribute =~ s/"/"/g; } $self->{string} = "\n$self->{string}\n"; $self->{string} =~ s/([^\"(")(>)])(https?:\/\/[\w\.\~\-\/\?\&\#\+\=\:\;\@\%]+)([^\"(")(<)])/$1$2<\/a>$3/gi; $self->{string} =~ s/([^\"(")(>)])(ftp:\/\/[\w\.\~\-\/\?\&\#\+\=\:\;\@\%]+)([^\"(")(<)])/$1$2<\/a>$3/gi; $self->{string} =~ s/([^\"(")(>)])([\w\-]+\@[\w\-\.]+)([^\"(")(<)])/$1$2<\/a>$3/gi; $self->{string} =~ s/^\n//; $self->{string} =~ s/\n$//; return $self->{string}; } ### パスワード作成 sub create_password { my $self = shift; my $salt = pack('CC', int(rand(26) + 65), int(rand(10) + 48)); $self->{string} = crypt($self->{string}, $salt); return $self->{string}; } ### HTML有効化 sub permit_html { my $self = shift; $self->{string} =~ s/"/"/g; $self->{string} =~ s/</{string} =~ s/>/>/g; $self->{string} =~ s/&/&/g; return $self->{string}; } ### 文字数取得 sub check_length { my $self = shift; return length($self->{string}); } ### 行数取得 sub check_line { my $self = shift; return ($self->{string} =~ s/
/
/g) + 1; } ### 指定文字列数取得 sub check_count { my $self = shift; my $string = shift; return ($self->{string} =~ s/$string/$string/g); } ### パスワード照合 sub check_password { my $self = shift; my $password = shift; my $flag; if ($self->{string} and $password and crypt($self->{string}, $password) eq $password) { $flag = 1; } return $flag; } ### データ設定 sub set_string { my $self = shift; my $string = shift; $self->{string} = $string; return; } ### データ置換 sub replace_string { my $self = shift; my $before = shift; my $after = shift; $self->{string} =~ s/$before/$after/g; return $self->{string}; } ### データ省略 sub trim_string { my $self = shift; my $width = shift; my $marker = shift; if (length($self->{string}) > $width) { $self->{string} = substr($self->{string}, 0, $width); if ($self->{string} !~ /[\x00-\x7F]$/) { $self->{string} =~ s/[\xC0-\xFD]$//; $self->{string} =~ s/[\xE0-\xFD][\x80-\xBF]$//; $self->{string} =~ s/[\xF0-\xFD][\x80-\xBF]{2}$//; } $self->{string} .= $marker; } return $self->{string}; } ### データ取得 sub get_string { my $self = shift; return $self->{string}; } 1;