CGI-BBS > CGI > Perl > 自作Perlについてデータ一致・不一致を完全一致で表示したい。


カレッヂ
カレッヂ


質問者 小野塚貴弘  投稿日 11/16(日) 03:17:13
sub girlnamelink {
	open IN,"../admin/gir-data.cgi";
	while(<IN>){
		$girldata = $_;
		chop($girldata);
		($girl_name) = (split(/\,/,$girldata))[1];
		($girl_id) = (split(/\,/,$girldata))[0];
		$nk =~ s/$girl_name/<a href=\"..\/gir-view.cgi?id=$girl_id\" target=\"mainFrame\">$girl_name<\/a>/;
	}
}

※上記のようにデータ関連の処理を行うようにしているんですが、データ内に「りん」と「かりん」があった場合、区別ができず「りん」の抽出しかできません。(りんの方が先に登録している)
このような症状を治す場合にどうやったらやったら良いのでしょうか?

プロバイダ参照:http://www.zyforce-inc.com/
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:NextFTP
サーバ移転:していない
改造:していない
CGI習熟度:(未選択)

回答者 しあわせのツボ  [削除]  投稿日 11/17(月) 19:57:35
1. 正規表現でなくeqで比較をとる。
2. s/$var/foo/; でなく s/^$var$/foo/; とする。
質問者 小野塚貴弘  [削除]  投稿日 11/17(月) 20:06:03
すみません。初心者なので、できればどこをどのようにしたら良いか教えていただけませんでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 11/18(火) 11:54:23
$nk =~ s/$girl_name/<a href=?"..?/gir-view.cgi?id=$girl_id?" target=?"mainFrame?">$girl_name<?/a>/;
の行を、上記を参考に書き換えてください。
fooとかvarとかは日本語で言うなんたらかんたらなので適宜読み替えればOKです。
2の方法の方が書き換えが少なくて済むと思います。^と$を書き足すだけなので。
質問者 小野塚貴弘  [削除]  投稿日 11/20(木) 22:28:06
誠に申し訳ありませんが、教えていただいた方法が理解できず、未だにうまく動作いたしません。
先の内容をどういうものにしたらうまく動作するのか、宜しければ教えていただけませんでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 11/21(金) 13:48:55
うーん…これでわからないと言われると、ちょっときついです。
正規表現について勉強してきてください、と言いたいところですが、特別に。
$nk =~ s/^$girl_name$/<a href〜(略)/;
質問者 小野塚貴弘  [削除]  投稿日 11/21(金) 14:02:26
誠に申し訳ありません。何分人が作ったものなので。
先に教えていただいたものでもダメでした。もしかしたらという所ですが、下記の部分に問題があるのかと思いご質問させてください。
下記の一文に問題はありませんでしょうか?今までの記述も参考にお教えいただけませんでしょうか?

if ($Al eq "yes" && index($nk,'="http') == -1) {$nk =~ s/(https?|ftp)\:([\w\/\.\~\?\:\!\#\%\=\&\-\\\@\[\]\{\}\(\)\;\+\*\,]+)/<a href=\"$1\:$2\" target=\"_blank\"><font color=$Lc>$1\:$2<\/font><\/a>/g;}
回答者 しあわせのツボ  [削除]  投稿日 11/21(金) 20:36:03
うーん、何だろう…
「うまく動作しない」とはどのような状態ですか?
漠然と「動かない」では原因の絞り込みができません。

後者のは、ごく普通のURL自動リンク処理ですね。
微妙に問題がありそうな気はしますが、これが原因になることはないでしょう。
質問者 小野塚貴弘  [削除]  投稿日 11/21(金) 21:41:11
漠然としていてスミマセンでした。
一番最初に投稿した内容で動作させた場合、本CGIにて抽出されたデータ(名前)が
個人情報を格納したデータファイルを参照し、そのデータを下に名前にリンクを張る
動作をしております。その際に最初に投稿した内容では「りん」と「かりん」の判別
ができないようで、データを先に入力した「りん」の方を優先するようで、「かりん」
のデータをリンクさせたいのですが、「か」にはリンクがなく「りん」だけリンクが
張られ、「りん」のデータのリンクが表示されてしまいます。
そこで、今回の質問としては、正確にデータを参照し、「か」「りん」ではなく、
「かりん」でリンクされ、かつ「かりん」のデータと一致するようにしたいのです。

一応下記のアドレスにスクリプトを置いておきます。
http://zyfore.ddo.jp/sc.cgi.txt

よろしくお願いします。

返信(回答)する

 


Web裏技