クエリー操作、圧縮解凍のサンプル - Web AI

Web AI」は、クロノス・クラウンの柳井政和が開発しているJavaScirptのライブラリです。

「Web AI」には、URLのクエリーを手軽に書き換えたり、文字列を圧縮したりする機能があります。この機能を使えば、URLのクエリーを圧縮して短くして、ページ読み込み時にそのデータを解凍したりができます。

それでは以下、「Web AI」のクエリーの操作と圧縮・解凍のサンプルを掲載します。


まずは、実例です。

文字列1(srcStr1=):


文字列2(srcStr2=):




元の文章 文字列の合計長
  半角長:
  ユニコードバイト長:

通常のURLを作成してエンコード 文字列の合計長:


クエリーを圧縮したURLを作成 文字列の合計長:


クエリーを圧縮したURLを復元 文字列の合計長:




以下、少し補足です。

クエリーからの文字列の取得には「get」と「getRaw」の2種類があります。

「get」はhtmlタグが自動でエスケープされるので、タグが入っている場合は文字列長が変わります。「getRaw」はhtmlタグをエスケープしないので文字列長は変わりません。




以下、ソースコードです。

	// Googleからスクリプトをロード
	google.load("search", "1");
	google.load("feeds",  "1");
	google.load("jquery", "1.4.3");

	// 初期化
	google.setOnLoadCallback(function () {
		prettyPrint();		// ソースの装飾(*説明装飾用)
	});

	/**
	 *	@title	【テスト】
	 *	@description
	 *
	 *		テストを行う。
	 */
	function test() {
		// 変数の初期化
		var $WA = crocro.webAi;		// 短縮表記
		var cQ  = new $WA.Query();	// クエリー

		// 元文字列の長さを求める
		var srcStr1 = $("#srcStr1").val();
		var srcStr2 = $("#srcStr2").val();
		$("#srcHanLen").html(getHanLen(srcStr1 + srcStr2));
		$("#srcLen").html(getBytLen(srcStr1 + srcStr2));

		// URLの作成
		cQ.prsFrmUrl({url: "http://www.google.com/"});
		//cQ.prsFrmLocation();		// 現在のURLをパースさせる場合
		cQ.set("srcStr1", srcStr1);
		cQ.set("srcStr2", srcStr2);

		// 通常URL
		var urlNrml = cQ.getUrl();
		$("#urlNrml").val(urlNrml);
		$("#urlNrmlLen").html(urlNrml.length);

		// 圧縮URL
		var urlCmprs = cQ.getCmprsUrl();
		$("#urlCmprs").val(urlCmprs);
		$("#urlCmprsLen").html(urlCmprs.length);

		// 圧縮URLの復元
		var cQR = new $WA.Query();		// クエリー
		cQR.prsFrmUrl({url: urlCmprs});

		var strDcmprs1 = cQR.get("srcStr1");
		var strDcmprs2 = cQR.get("srcStr2");
		$("#urlDcmprs1").val(strDcmprs1);
		$("#urlDcmprs2").val(strDcmprs2);
		$("#urlDcmprsLen").html(getHanLen(strDcmprs1 + strDcmprs2));
	}

	/**
	 *	@title	【半角長取得】
	 *	@description
	 *
	 *		文字列の半角での長さを取得。
	 */
	function getHanLen(s) {
		var resN = 0;
		for (var i = 0; i < s.length; i ++) {
			resN += (encodeURIComponent(s.charAt(i)).length > 3) ? 2 : 1;
		}
		return resN;
	}

	/**
	 *	@title	【バイト長取得】
	 *	@description
	 *
	 *		ユニコード文字列のバイトの長さを取得。
	 */
	function getBytLen(s) {
		var resN = 0;
		for (var i = 0; i < s.length; i ++) {
			var enc = encodeURIComponent(s.charAt(i));
			resN += (enc.length > 3) ? enc.length / 3 : 1;
		}
		return resN;
	}

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について