[20] 全角文字対応substr(S-JIS専用) | |
2001/7/3 (Tue) 16:59:40 - あけび |
| Cyclamen BBS で記事題名切り詰めとして使っている処理を
汎用化したものです。
・引数はsubstrと同じく、開始位置、文字長のいずれかを省略できます。
・全角文字は2文字として数えます。
sub z_substr {
local($s,$p,$l) = @_;
$s =~ s/(.)/$1\0/g;
$s =~ s/([\x81-\x9f\xe0-\xfc])\0(.)\0/$1$2\0\0/g;
$s = $l eq '' ? substr($s,$p*2):substr($s,$p*2,$l*2);
$s =~ tr/\0//d;
$s;
}
#example.
print &z_substr('全角文字',1,3) ."\n";
print &z_substr('全角文字',-4) ."\n";
print &z_substr('全角文字',,2) ."\n";
|
|
|