104 :
:
>>104 分かるもなにも、その$http_URL_regexってやつを
見せてもらわんと。そんなに長いんか?
も、もしかして、大崎氏の「Perlメモ」にある
ものすごい正規表現のことかな。。。
>>104 $data =~ s/($http_URL_regex)/&convurl($1)/ge;
sub convurl {
my($url) = shift;
my($str) = qq{<a href="$url">};
$url =~ s|(?<!/)/(?!/)|<wbr>/|g;
$str .= qq{$url</a>};
}
こんなんしか思いつかんダサ
107 :
104:01/10/12 09:48 ID:???
110 :
109:01/10/12 13:15 ID:???
111 :
:01/10/15 01:18 ID:???
>>112 その心は「クォート閉じ忘れやクォートなしは不正なのに、
それに対応していない2chを批判するのは馬鹿」という理解でよいですか。
ちなみに現行はこう。
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\" target=\"_blank\">$1\:$2<\/a>/ig;
116 :
113:01/10/15 09:07 ID:???
>>114 いや、そういう意味で言ってるんだとしたら間違ってるよ。
っていいたかったの。
> &は含むけど<や>は含まないように
> リンクを張る正規表現は?
URLという意味では<が含まれてても問題(よね?)と思うので、
<や>をはじく必要は無いと思うけど・・・
ちょっと考えるよ。
すんません。
$116 =~ s/(問題)/$1無い/;
$116 =~ s/</</g;
$116 =~ s/>/>/g;
つーか正しく伝わってないかも。
< や > が含まれてると問題あるけど、htmlソース上は
< や > だから含まれてしまうのを
修正したいってことなんだけど。
120 :
113:01/10/15 10:18 ID:???
s/</</g; s/>/>/g してから
リンク張ってるのがまずいんですね。
リンク張りつつ < > 除去すれば正確になるのかな。
s{
((?:https?|ftp|gopher|telnet|whois|news)://[-_.!~*'()a-zA-Z0-9;/?:\@&=+\$,%]+)
| (<) | (>)
}{
$1 ? "<a href=\"$1\">$1</a>" :
$2 ? '<' :
$3 ? '>' :
''
}xeg;
とかはどうですか?
121 :
113:01/10/15 10:37 ID:???
単純に <、> を避けるならこんな感じっすかね?
s{(
(?:https?|ftp|gopher|telnet|whois|news)://
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
news: の場合も // で始まるんでしたっけ?
s{(
(?:(?:https?|ftp|gopher|telnet|whois)://|news:)
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
URI referenceの場合にもリンクを貼りたいから
s{(
(?:(?:https?|ftp|gopher|telnet|whois)://|news:)
(?:[-_.!~*'()a-zA-Z0-9;/?:\@=+\$,%#] | &(?![lg]t;) )+
)}
{<a href=\"$1\">$1</a>}xg;
一般的なCGIなら http と ftp 以外にリンク貼る必要も無いだろうから、
これで十分かな?
s{((?:https?|ftp)://(?:[-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}{<a href="$1">$1</a>}g;
どっちにしても中途半端だけど。
oとtarget=_blankを付けてみる。
s{((?:https?|ftp)://(?:[-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}{<a href="$1" target=_blank>$1</a>}go;
o修飾子はパターンに変数が入っていないときは影響なしとおもう。
ちがうの?
そうかも。
128 :
名無しさん@お腹いっぱい。:01/10/19 22:45 ID:SauUPYVx
正規表現の火を消すな。