推奨:ASP 3.0高度なプログラミング(32) 7.2.4クライアントスクリプトエラーこれまで、ASPからのエラーについて学びました。ただし、ASPは、クライアントスクリプトを含むWebページを作成するためにもよく使用されます。クライアントコードを含む<script>要素がrunat = serverに設定されていない場合
前回、正規表現オブジェクトを使用してASPのさまざまなデータの検証を実現する方法について説明しました。この記事では、正規表現オブジェクトの強力な機能について説明しています。次に、正規表現オブジェクトの他の機能を見てみましょう。特にさまざまなフォーラムを閲覧するとき、インターネットをサーフィンするとき、UBBコードという単語がよく表示されます。 UBBコードとは何ですか? UBBコードはHTMLのバリアントであり、Ultimate Bulletin Board(海外のBBSプログラム、および中国の多くの場所がこのプログラムを使用している特別なタグです。 HTMLコードによるフォーラムに対するユーザーの意図的または意図的な攻撃を回避するために、さまざまなフォーラムが基本的にHTMLコードをブロックします。ただし、フォーラムをよりカラフルにするために、フォーラムは、[url]、[/url]、[red]、[/red]など、HTMLのタグと同様に、いくつかのカスタムタグタグを開きます。このようにして、HTMLコードに相当する一部の機能を提供することができ、フォーラムは悪意のある攻撃から回避できます。これらのカスタムタグは、一般にUBBコードとして知られています。現在、すべてのファッショナブルなフォーラムは、ダイナミックテクノロジーネットワークのフォーラムなどのUBBコードをサポートしています。UBBコードは非常によくサポートされています。次に、正規表現オブジェクトを使用して、独自のカラフルなUBBコードを実装しましょう。
まず第一に、サーバー側(IISまたはPWS)にはVBScript5.0サポート環境が必要です。これは、一般に、IE5.xがインストールされた後に正規表現オブジェクトを既にサポートできることを意味します。
正規表現オブジェクトの一般的な方法と属性の使用方法に関して、この記事では、正規表現オブジェクトを使用してASPにデータ検証を実装することについて既に紹介しました。その記事を参照できます。ここでは、主にUBBコードを実装するメインの正規表現オブジェクトメソッドを導入します。
交換方法の構文は次のとおりです。
交換方法の構文は次のとおりです。
説明する
正規表現の検索で見つかったテキストを交換します。
文法
object.replace(string1、string2)
交換方法の構文には、次の部分が含まれます。
部分的な説明
必要なオブジェクト。常にregexpオブジェクトの名前。
string1が必要です。 string1は、テキスト置換が実行される文字列です。
string2が必要です。 string2は、置換テキスト文字列です。
説明します
交換されたテキストの実際のパターンは、regexpオブジェクトのパターンプロパティを介して設定されます。
置換メソッドは、regexp.patternテキストがstring2に置き換えられたstring1のコピーを返します。一致するテキストが見つからない場合、元のstring1のコピーが返されます。
次に、最終的にどのようなUBBコードを実装したいかを判断したいですか?今回実装したいUBBコード関数は次のとおりです。
URLハイパーリンク
メッセージにハイパーリンクを追加し、次の方法で挿入するだけです(UBBコードは太字です)。
[url] www.test.net [/url]
上記のように挿入することにより、UBBコードはURLを自動的にリンクし、ユーザーが新しいウィンドウをクリックするとリンクが開いていることを確認します。
電子メールリンク
メッセージにメールハイパーリンクを追加して、次の例に従って挿入してください(UBBコードは太字です)
[電子メール] [email protected] [/email]
上記のように挿入すると、UBBコードは自動的に電子メールにリンクします。
画像に追加します
メッセージに画像を追加して、次の例に従って挿入してください(UBBコードは太字です)。
[IMG] http://www.test.net/test.gif [/img]
上記の例では、UBBコードはメッセージに画像を自動的に表示します。
その他のタグ
これらのタグもあります。usmallH1 H1 H3 H4 H5 H5 H5 H5 Strike Blink Sub Sup Del Big、これらのタグの機能はHTMLの機能と同等です
[H1]これはタイトルです[/h1]
[/タグ]は必須です
テキストの段落を色で表示します
これは特別なタグです
[#ff0000]赤い単語[/#]
#赤はFF0000、緑は00FF00、青は0000ffなど、色の16進RGBコードとそれに続く
上記のものと同様の他のさまざまなUBBコードの実装方法については、上記のUBBコード実装を例として、正規表現オブジェクトの強力な機能を説明します。
主に、leplage()メソッドと対応するテンプレートを使用して、UBBコード関数を簡単に実装します。ここでは、主に自分で書かれた2つの関数、最初の関数が代替したものを使用します。この関数によって実装される関数は、主に正規表現オブジェクトをカプセル化し、3つのエントリパラメーターを提供することです。
patrn
このパラメーターは、UBBコードの一致するテンプレートを渡します
str
このパラメーターは、記事コンテンツなど、UBBモードで処理される文字列を渡します。
REPLSTR
このパラメーターは、それに一致するHTMLコード言語を渡します。
代替機能の出口パラメーターは、テンプレートマッチングに置き換えられた文字列です。
代替機能コードは次のとおりです。
function applageTetest(patrn、str、replstr)
Dim Regex、Str1 'は変数を作成します。
str1 =トリム(str)
regex = new regexp '正規表現を作成します。
regex.pattern = patrn 'セットモード。
regex.ignorecase = true 'セットが症例に敏感かどうかを設定します。
交換用のapplateTEST = regex.Replace(str1、Replstr) '。
regex = set nothing '正規表現オブジェクトを破壊します
エンド関数
書きたい2番目の関数は、ubb()関数です。この関数によって実装される関数は、テキストをUBB関数に変換することです。この関数には、1つのエントリパラメーターのみがあります。
str
このパラメーターは、処理する文字列を渡します。
UBB関数のエクスポートパラメーターは、UBBコードで処理される文字列です。
UBB関数のコードは次のとおりです。(プログラムには詳細なコメント情報があります)
functionubb(str)
DIM I、TEMP '宣言変数
i = 1
temp =
instrums(i、str、[/]> = 1 '文字列の端が到達しない場合は
if trim(temp)= then
temp = applageetest((/[i])(/s)(/[/i])、str、<i> $ 2 </i>) 'UBBコードの一致と置換のドキュメントテンプレート
それ以外
temp = applageetest((/[i])(/s)(/s)(/[/i])、temp、<i> $ 2 </i>) 'UBBコードの一致と置換のドキュメントテンプレート
ifを終了します
temp = appledetest((/[b])(/s)(/[/b])、temp、<b> $ 2 </b>) 'UBBコードの一致と置換を比較する
temp = applageetest((/[big])(/s)(/s)(/[/big])、temp、<big> $ 2 </big>) 'UBBコードの一致と置換のドキュメントテンプレート
temp = applageetest((/[strike])(/s)(/s)(/[/strike])、temp、<strike> $ 2 </strike>) 'UBBコードのマッチングと置換を実行する
temp = applageetest((/[sub])(/s)(/s)(/[/sub])、temp、<sub> $ 2 </sub>) 'UBBコードのマッチングと置換を実行する
temp = applageetest((/[sup])(/s)(/[/sup])、temp、<sup> $ 2 </sup>)
temp = applageetest((/[pre])(/s)(/[/pre])、temp、<pre> $ 2 </pre>)
temp = applageetest((/[u])(/s)(/[/u])、temp、<u> $ 2 </u>)
temp = applageetest((/[small])(/s)(/[/small])、temp、<small> $ 2 </small>)
temp = applageetest((/[h1])(/s)(/[/h1])、temp、<h1> $ 2 </h1>)
temp = applageetest((/[h2])(/s)(/[/h2])、temp、<h2> $ 2 </h2>)
temp = applageetest((/[h3])(/s)(/[/h3])、temp、<h3> $ 2 </h3>)
temp = applageetest((/[h4])(/s)(/[/h4])、temp、<h4> $ 2 </h4>)
temp = applageetest((/[h5])(/s)(/[/h5])、temp、<h5> $ 2 </h5>)
temp = applageetest((/[h6])(/s)(/[/h6])、temp、<h6> $ 2 </h6>)
temp = applageetest((/[red])(/s)(/[/red])、temp、<font color = red> $ 2 </font>)
'これにより、新しいUBBコード実装テンプレートを追加できます
temp = applageetest((/[email])(/s)(/[/email])、temp、<a href = mailto:$ 2 target = _top> $ 2 </a>)
temp = applageetest((/[img])(/s)(/[/img])、temp、<img src = $ 2>)
temp = applageetest((/[url])(/s)(/[/url])、temp、<a href = $ 2ターゲット= _top> $ 2 </a>)
temp = applageetest((/[#(/s)])(/s)(/[/#])、temp、<font color = $ 1> $ 3 </font>) 'UBBコードのマッチングと置換を実行する
i = i 1
ループ
if trim(temp)<> then
ubb = temp 'は、UBBコードでフィルタリングされた文字列を渡します
それ以外
ubb = str 'ubbコードでフィルタリングされた文字列を渡します
ifを終了します
エンド関数
機能UBBのコードでは、1ドル、$ 2、$ 3などを見ることができます。これらの文字列は、一致する文字列の代名詞です。いくつかのマクロと同じように、それらを使用して、一致する文字列の位置を記憶するためにプログラムを使用することなく、一致する文字列を置き換えることができます。これら2つの単純な関数呼び出しを通じて、UBBコード関数を実装しました。それはどうですか、それはとても簡単です。
このようにして、記事を表示するときにUBB関数を呼び出し、記事のコンテンツを処理してからブラウザに表示し、フォーラムのUBBコード関数を実現する必要があります。さらに、関数UBBに必要なUBBコードマッチングの交換テンプレートを簡単に追加できるため、UBBコードの関数を継続的に拡張できます。
(上記のプログラムはすべて実行され、winnt4.0英語版SP5、IIS4.0、IE5.xで渡されます)
共有:ASPコントロールXMLデータベースの6つの非常にクラシックコードNo.1- XMLデータベースdata.xml <?xmlバージョン= 1.0?> <レコード> <レコード> <name> caca </name> <qq> 1を作成します