WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:aspの関数の作成について

0:[投稿] やすし [MAIL] [2005/02/13 00:31 ][環境:IE6,wingdows2000 server NT]

関数の作成です。
次の関数は不許可タグのチェック関数です、
正常の場合は戻り値0、不許可タグが入ったら戻り値は4、予期しないエラーの場合は戻り値5を戻します。
チェック項目はstrMsgUpdateです。
現在の仕様はstrMsgUpdateの中にリンクタグ、太字タグ、改行タグ、フォントタグ以外のタグが入ったらエラー(4)になってくださいの形です、
次は私が作った関数ですが問題ありそうですので、ぜひ皆様の協力をお願いいたします。
Function chkMessageInput(strMsgUpdate)

    Dim iPos                                       '検索位置
    Dim strMsgU                                       '大文字変換後メッセージ
    Dim strTag                                       'タグ
    Dim i                                            'カウンタ

    chkMessageInput = 0                               '戻り値初期化

    On Error Resume Next                           'ランタイムエラー防止

    strMsgU = UCASE(strMsgUpdate)                  '全て大文字に変換


    '////////////////
    ' タグチェック
    iPos = InStr(strMsgU, "<")

    Do While iPos > 0
        'タグ閉じなら次へ
        If Mid(strMsgU, (iPos + 1), 1) = "/" Then
            iPos = iPos + 1
            iPos = InStr(iPos, strMsgU, "<")
            If iPos < 1 Or (iPos + 1) > Len(strMsgU) Then    'もうタグ無ければ
                Exit Do
            End If
        Else
            'タグ文字抽出
            For i = (iPos + 1) To Len(strMsgU)
                'タグ名決定位置
                If Mid(strMsgU,i,1) = " " Or Mid(strMsgU,i,1) = ">" Then            
                    '抽出
                    strTag = Mid(strMsgU, (iPos + 1), (i -1 - iPos))                
                    '許可タグなら
                    If strTag = "A" Or strTag = "B" Or strTag = "BR" Or strTag = "FONT" Then
                        '次のタグへ
                        iPos = iPos + 1
                        iPos = InStr(iPos, strMsgU, "<")
                        If iPos < 1 Or (iPos + 1) > Len(strMsgU) Then
                            Exit Do
                        End If
                        Exit For
                    '許可以外のタグなら
                    Else
                        chkMessageInput = 4               '不許可タグエラー終了
                        Exit Do
                    End If
                End If
            Next
        End If
    Loop

    If Err.Number <> 0 Then                           'エラー発生時は
        chkMessageInput = 5                           '予期しないその他のエラーを返す
    End If

    On Error GoTo 0

End Function

例;
<a href=” 任意の文字列”>xxx</a>  ,</br>, <b> ,<font>任意の文字列</font>こんな場合は正常です。
異常は
<a href=” 任意の文字列”>xxx</a> </a> ,</br>, <b> ,<font>任意の文字列</font>こんなふうに</a>要らないタグが入ったらエラーが出てくるようにするのがこの関数の役割ですが、、、

ぜひお願いいたします。


1:[回答] andi [2005/02/13 15:32 ]

> 次は私が作った関数ですが問題ありそうですので、ぜひ皆様の協力をお願いいたします。

何がどう問題ありそうなんでしょうか?
貴方が問題に思っていることを共有しないと回答しようもありません。
テストパターンから考えてデバッグしてくれってことでしょうか?


2:[回答] G [2005/02/13 16:26 ]

他力本願とは、まさにこのこと。
問題がありそうで、自信が無いなら、金を払って業者に頼めば良いでしょう。
少なくとも、仕事でやっているような姿勢には見えません。


3:[回答] B-Cus [2005/02/13 17:19 ]

> 何がどう問題ありそうなんでしょうか?
ちょっとわかりづらいですが、最後の「例;」のところに問題点が
不明確に記述してあります。


4:[回答] 森田 [2005/02/13 23:56 ]

簡単にタグの構文チェックをしてから許可するタグのチェックをすれば良いんじゃないですか。


5:[質問] やすし [MAIL] [2005/02/14 22:36 ]

詳しい例:
strMsgUpdate=” <a href=” 任意の文字列”>xxx</a>  ,</br>, <b> ,<font>任意の文字列</font>”

これでチェックがOK
NGの場合は
1.strMsgUpdate=”<a href=” 任意の文字列”>xxx</a> </a> ,</br>, <b> ,<font>任意の文字列</font>”
2、strMsgUpdate=”<a href=” 任意の文字列”>xxx</a> </> ,</br>, <b> ,<font>任意の文字列</font>”
3、strMsgUpdate=”<a href=” 任意の文字列”>xxx</a> <p> ,</br>, <b> ,<font>任意の文字列</font>”
、、、など
、なぜならば “</a>”或いは“</>”、“<p>”など不必要なタグが入ってるため、
以上です、よろしくお願いいたします。


6:[回答] andi [2005/02/15 09:32 ]

えっと・・・デバッグ以前の問題で、仕様を渡すから関数を書き直してくれってことでしょうか?
その仕様も仕様と言えるような内容ではないようですが・・・。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World