出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

制限つきのタグ規制について   ハルノさん [2002/04/16 22:51:51] [1995]
  Re:制限つきのタグ規制について   Tomitomiさん [2002/04/17 10:48:32] [2002]
    Re:制限つきのタグ規制について   ハルノさん [2002/04/17 13:29:53] [2006]
      Re:制限つきのタグ規制について   Tomitomiさん [2002/04/17 15:19:34] [2007]
        Re:制限つきのタグ規制について   ハルノさん [2002/04/17 16:16:23] [2009]

[1995] 制限つきのタグ規制について
投稿者:ハルノさん 2002/04/16 22:51:51
はじめまして。
ASP初心者のハルノと申します。

掲示板システムを作っています。
本来は、ユーザの書き込みの中に、HTMLタグの使用を許可しない
仕様なのですが、<FONT>タグだけは使いたいという要望がありました。
そこで、いったん

for i = 1 to Len(txt)
iChar1 = Asc(Mid(txt, i, 1))
select case iChar1
(略)
case 60 '<のとき
rTxt = rTxt & ”&lt”
case 62 ’>のとき
rTxt = rTxt & ”&gt”
(略)
end select
next

のような形で、”<”、”>”の記号を変換し、タグを無効にしたあと、

Replace rTxt, ”&ltFONT”, ”<FONT”, 1, -1, 1
Replace rTxt, ”&ltfont”, ”<FONT”, 1, -1, 1

のようなコマンドを発行したのですが、うまくフォントタグが効いてくれません。
何かうまい方法はないでしょうか?
また、考え方の間違いの指摘も、よろしかったらお願いしたいです。

[2002] Re:制限つきのタグ規制について
投稿者:Tomitomiさん 2002/04/17 10:48:32
こんにちは、Tomitomiです。

> 掲示板システムを作っています。
> 本来は、ユーザの書き込みの中に、HTMLタグの使用を許可しない
> 仕様なのですが、<FONT>タグだけは使いたいという要望がありました。
> そこで、いったん
>
> for i = 1 to Len(txt)
> iChar1 = Asc(Mid(txt, i, 1))
> select case iChar1
> (略)
> case 60 '<のとき
> rTxt = rTxt & ”&lt”
> case 62 ’>のとき
> rTxt = rTxt & ”&gt”
> (略)
> end select
> next
>
> のような形で、”<”、”>”の記号を変換し、タグを無効にしたあと、
>
> Replace rTxt, ”&ltFONT”, ”<FONT”, 1, -1, 1
> Replace rTxt, ”&ltfont”, ”<FONT”, 1, -1, 1
>
> のようなコマンドを発行したのですが、うまくフォントタグが効いてくれません。
> 何かうまい方法はないでしょうか?
> また、考え方の間違いの指摘も、よろしかったらお願いしたいです。

現状のまま表示してブラウザから「表示→ソース」でソースを見てみる。
変換したはずのFONTタグのところが、ちゃんとタグになってるか見たほうが良いですね。

[2006] Re:制限つきのタグ規制について
投稿者:ハルノさん 2002/04/17 13:29:53
> 現状のまま表示してブラウザから「表示→ソース」でソースを見てみる。
> 変換したはずのFONTタグのところが、ちゃんとタグになってるか見たほうが良いですね。
>

書き方が悪かったですね。
「&lt」から「<」に変換されていないのは、確認済みです。
なぜ、

> Replace rTxt, ”&ltFONT”, ”<FONT”, 1, -1, 1
> Replace rTxt, ”&ltfont”, ”<FONT”, 1, -1, 1

この方法がうまくいかないのか、それがわからなくて困っています。

[2007] Re:制限つきのタグ規制について
投稿者:Tomitomiさん 2002/04/17 15:19:34
こんにちは、Tomitomiです。

テストしてみました。結果できました。

<%
rTxt = "&lt;FONT"

rTxt = Replace(rTxt,"&lt;FONT", "<FONT", 1, -1, 1)
rTxt = Replace(rTxt,"&lt;font", "<FONT", 1, -1, 1)

Response.write rTxt
%>

ハルノさんのソースで気になる点
1.置き換える文字列が「&ltFONT」ではなく「「&lt;FONT」では?
2.Replace関数を変数へ代入せずにそのまま書いてるのでは?
 × Replace rTxt,"&lt;font", "<FONT", 1, -1, 1
 ○ rTxt = Replace(rTxt,"&lt;font", "<FONT", 1, -1, 1)

あとテキストモードでの比較では、大文字小文字を区別しないので
> Replace rTxt, ”&ltFONT”, ”<FONT”, 1, -1, 1
> Replace rTxt, ”&ltfont”, ”<FONT”, 1, -1, 1
のように大文字。小文字を置き換える処理を2行書かなくても1行で置換えできたと思います。

[2009] Re:制限つきのタグ規制について
投稿者:ハルノさん 2002/04/17 16:16:23
Tomitomiさん、ありがとうございました。
試してみたところ、うまくいきました!

> 2.Replace関数を変数へ代入せずにそのまま書いてるのでは?
>  × Replace rTxt,"&lt;font", "<FONT", 1, -1, 1
>  ○ rTxt = Replace(rTxt,"&lt;font", "<FONT", 1, -1, 1)

Σ( ̄□ ̄;;
まったくもっておっしゃるとおりでした。
文字列操作関数でなにやってんでしょうか、私(汗)
replaceはJavaでも戻り値があるのに……。
勉強しなおしますm(_ _)m

> 1.置き換える文字列が「&ltFONT」ではなく「「&lt;FONT」では?

こちらの方は、「&lt」に変換していたので、セミコロンはなくても大丈夫でした。

> あとテキストモードでの比較では、大文字小文字を区別しないので
> > Replace rTxt, ”&ltFONT”, ”<FONT”, 1, -1, 1
> > Replace rTxt, ”&ltfont”, ”<FONT”, 1, -1, 1
> のように大文字。小文字を置き換える処理を2行書かなくても1行で置換えできたと思います。

こちらもおっしゃるとおりでした。
大文字・小文字両パターンで試してみたところ、どちらもうまくいきました。

以上、ご報告させていただきます。
ありがとうございました。



TreeBBS For ASP V.0.1.3
Program By YasNet