|
<<1764 ん?? 何やってるんだろう。 s!<A HREF="(.*?)>">(.*?)></A>!<A HREF="$1">$2</A>>!g; s!<A HREF="(.*?)<">(.*?)<</A>!<A HREF="$1">$2</A><!g; これでいいんですね。 <<1762 はタイプミス <<1763 は勘違いでした。 板汚しですみません。 |
|
あっ、ウチも同じバグがある(^^; でも、書き戻しですね…、ちょっとテストさせてくださいm(_o_)m <http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/> |
|
おー、これってきっちりやると結構面倒かも。で、30分あれこれ やった結果…これでどだ! $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; $http_pattern = '((http|https)://[a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+)'; $out = ''; while (1){ if ( ! s!(.*?)($http_pattern)!! ){ $out .= $_; last; } $out .= $1; $buf = $2; $buf =~ s/((<|>|").*)//; $rest = $1; $buf =~ s!$http_pattern!<A HREF="$1">$1</A>!; $out .= $buf; $_ = $rest . $_; } print "$out\n"; 無限ループが恐いので (^^;、まだ wwwboard.cgi には組み込んでません。 |
|
無茶苦茶効率悪そうだし、未定義変数使用の警告が出るけど…(^^; $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; $http_pattern = '(http|https)(://)(([a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+?)(>|<|")|([a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+))'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; s!$http_pattern!<A HREF="$1$2$4$6">$1$2$4$6</A>$5!g; |
|
>>1767 68userさん おはようございます。 > おー、これってきっちりやると結構面倒かも。 こんなに奥が深いものとは想像もつきませんでした。以前これに着手しかけて断念した覚えはあったのですが,なぜ断念したかは覚えていません。 > 無限ループが恐いので (^^;、まだ wwwboard.cgi には組み込んでません。 早速ruby文に変換して実働掲示板に使っています。無限ループになっても利用者が二人しかいないサーバだし,HTTPならすぐ切れそうだということで,心配はしていません。 そんなわけで,いつもありがとうございます。これからもお世話になります。 |
|
こんなのも。 $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; $http_pattern = '((http|https)://[a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+)'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; @items = split(/(<|>|")/, $_); foreach (@items){ s|$http_pattern|<A HREF="$1">$1</A>|g; } $_ = join('', @items); print "$_\n"; アルゴリズム・正規表現が複雑にならないという点で、これが 一番よさげかなぁ。でも動作チェックと速度計測をしなくては。 もっとよいのを思いついた方は教えてください。 |