FTPの転送モード

FTPでホームページを転送する前にやっておかないといけない設定があります。転送モードの設定です。

HTMLファイルだけの転送なら、どっちでもOK。配布されてるCGI プログラムのアップロードなどなら、作者の指示に従えばOK。ですが、自分でプログラムを書く場合、特にローカル(Windows)で作ったデータファイルをアップしてサーバー(UNIX)上のプログラムで使う場合、とても重要になってきます。

バイナリモードとテキスト(アスキー)モード

一般的に転送モードは以下の2種類です。

バイナリモード

何もしません。
そのままファイルを転送します。ローカルとサーバーのファイルサイズはまったく同じになります。

テキスト(アスキー)モード

改行コードを変換して転送します。
WindowsからUNIXのサーバーへ転送した場合、ファイルサイズは小さくなります。

FTPソフトによっては文字コードの変換もしてくれるものもあります。また、Unicode未対応のサーバーにUnicodeのファイルを転送する場合、テキストモード転送が失敗する可能性もあります。

改行コード

テキストモードで転送した場合、改行コードを自動的に変換してくれます。

Windows:Cr+Lf(\r\n)
Unix/Mac:Lf(\n)
昔のMac:Cr(\r)

ウェブサーバーはだいたいUNIXですから、テキストモードでデータファイルを転送した場合、改行コードはLf(\n)になります。改行を<BR>に変換したりする時は、\nを置換しなければいけません。\r\nを対象にするとマッチしないことになります。

バイナリモードで転送するファイル

改行コードが関係ないファイルや、変換したら困るファイルです。

画像ファイル(JPG、GIF、PNGとか)、圧縮ファイル(ZIP、LHZとか)、音楽ファイル(MID、MP3とか)、PDF、Flashなど

HTMLファイルはどちらでもOKです。HTMLファイルは改行コードは関係ありませんので、テキスト/バイナリどちらでもOKです。

テキストモードで転送するファイル

サーバー上で利用されるファイルです。

CGIプログラム(CGI、PL、PHPなど)、設定ファイル(.htaccessなど)などは絶対に。

ログファイルやテキストファイルなどは用途に応じて。プログラムで読み込んで使う時に、改行コードさえ分かっていればどちらでもOKです。一般的には、テキストモードみたいです。

| | コメント (0) | トラックバック (0)

[VBA] 正規表現オブジェクトの使い方

Windows Script Host(VBScrpt)が使える環境なら、VBやVBAからも正規表現を使う事ができます。

ExcelVBAから正規表現が使えると、いろんな事ができるようになってとっても便利です。

正規表現オブジェクトの参照設定

正規表現オブジェクトを使う前に、参照設定でライブラリを追加しときます。

正規表現オブジェクト参照設定VisualBasicEditorのツール(T) - 参照設定(R)を開いて、「Microsoft VBScript Regular Expressions 5.5」を探し出して、チェックしてください。5.5のところは違うかもしれませんが、タブン、大丈夫です。

正規表現オブジェクト群

正規表現オブジェクトの関連オブジェクト/コレクションは以下の4つです。

・RegExp (メインのオブジェクト)
・MatchCollection (マッチしたデータを保持する)
・Match (マッチしたデータ本体)
・SubMatches (マッチしたデータの中から「抜き出し」を指定したデータ

ちょっと複雑そうですが、基本的に他のオブジェクトを使う時と同じです。

正規表現の基本

サブマッチ(SubMatches)は抜き出しを指定しなければ、必要ありませんので、使うのは3つ

正規表現オブジェクトを生成して、マッチパターンを作成します。HTMLのタグにマッチするパターンです。

Set MyRegExp = New VBScript_RegExp_55.RegExp
MyRegExp.Pattern = "<.*>"

で、実行します。実行結果を MyMatches コレクションに格納して、For Each で順番に回してやればOKです。

Set MyMatches = MyRegExp.Execute("テスト<HTML>TESTテスト")
For Each MyMatch In MyMatches
 Debug.Print MyMatch.Value
Next

Excecuteしただけでは、マッチした部分を取得できないので、面倒ですが上のようにしないといけません。

Debug.Print MyRegExp.Execute("テスト<HTML>TESTテスト")

ってのはダメです。

サブマッチ(SubMatches)の使い方

サブマッチは、マッチした部分の中から、さらに指定した部分を抜き出す為に使います。

上の例で言うと、括弧つきの <HTML> 全体じゃなくて、HTML っていう文字だけを抜き出したい、とかいう場合に使います。

いわゆる、タグ付正規表現です。

パターンを作る時に、括弧 ( ) で囲んだところが抜き出されます。

MyRegExp.Pattern = "<([a-z0-9]+).*?>"

サンプルソースコード

ローカルにあるHTMLファイルを読み込んで、HTMLタグ全体とそのタグ名(要素名)だけを抜き出すサンプルです。

実行結果(イミディエイトウィンドウ)

| | コメント (0) | トラックバック (0)

«[Access] ADOXテンプレート