■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50 [PR]ぜろちゃんねるプラス[PR]  
レス数が1000を超えています。残念ながら全部は表示しません。

【PSO2】世界群歩行者達チームスレ その2【ハガル】

606 :塊素 ★:2014/05/09(金) 12:28:31 ID:wk6RoT/N
 うーん、誰か Perl の正規表現について詳しい人いないかな、この掲示板のURL文字列の変換がなぜかうまく行かない。

【問題】
 スパム回避のために書き込み拒否文字列に http を指定している。
 これにあわせて、ttp で始まる URL文字列をリンク文字列に変換できるよう URL 文字列変換モジュールを修正した。
 しかしながら、現在の修正方法では正しく変換できていない。<a href="">内のアドレスの先頭に h が付かない。

【対象文字列例】
ttp://hades.worlds-walkers.org/~WW/og/PSO2/

【修正前(抜粋)】
my $reg1 = q{(https?|ftp)://(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}; # URL検索1
$$text =~ s|$reg1|<a href="$1://$2" target="_blank">$1://$2</a>|g;

【修正後(抜粋)】
my $reg1 = q{(h?ttps?|ftp)://(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}; # URL検索1
if ($1 eq 'ttp' || $1 eq 'ttps') {
  $$text =~ s|$reg1|<a href="h$1://$2" target="_blank">$1://$2</a>|g;
}
else {
  $$text =~ s|$reg1|<a href="$1://$2" target="_blank">$1://$2</a>|g;
}

【調査状況】
 修正後の if 判定において、($1 eq 'ttp' || $1 eq 'ttps') が真として判定されずに else の側へと処理が流れてしまう。
 $1 の中身は ttp となっている模様。

【現在取れると思われる解決策】
 ftp を捨てて http か ttp かで判断してしまう。

420KB
READ.CGI - 0ch+ BBS 0.7.5 20220323
ぜろちゃんねるプラス