VBScriptの関数定義をWEB上に置いて、PCで使用する の発展版です。 ※ WEB 上に置くソースコードは、上記リンク先を参照して下さい。Msxml2.ServerXMLHTTP で読み出すコードの作成方法
Msxml2.ServerXMLHTTP は昔はバグがありましたが、今はとても優秀なオブジェクトです。ただ、相手側が静的ファイルの場合は UTF-8 扱いになるはずなので、PHP 側でキャラクタセットを明示しています。( 以下のサンプルの PHP / https://toolbox.winofsql.jp/vbs/regtrim.php は SHIFT_JIS です )
REM ********************************************************** REM 正規表現のトリム REM ********************************************************** Function RegTrim( strValue ) Dim regEx, str Set regEx = New RegExp regEx.IgnoreCase = True regEx.Pattern = "^[ \s]+" str = regEx.Replace( strValue, "" ) regEx.Pattern = "[ \s]+$" RegTrim = regEx.Replace( str, "" ) End Function
このコードを regtrim.vbs や regtrim.txt としてWEB上のどこかに置く場合は、UTF8N で保存しますExecuteGlobal による動的な関数の登録
読みだした後、ExecuteGlobal で文字列を実行してしまうのが特徴です。Global スコープで実行されるため、最初から定義していたのと同じ事になります。 但し、この処理を行う為に読みだされるソースコード側で注意する事があります 1) コメントにシングルクォートを使わないで REM を使う 2) 条件文で = を使わないで <> の else で表現する これらは、ExecuteGlobal が正しく VBScript の構文を解析する為に重要な準備事項になるので注意して下さい
<job> <object id="http" progid="Msxml2.ServerXMLHTTP" /> <script language="VBScript"> ' 関数のソースコードを読みだして、関数として定義 strResult = HTTPGet( "https://toolbox.winofsql.jp/vbs/regtrim.php" ) if not IsEmpty( strResult ) and Left( strResult, 3 ) = "REM" then ' 関数定義の実行 ExecuteGlobal strResult else MsgBox( "処理できませんでした" ) Wscript.Quit end if str = RegTrim( getResource( "mydata" ) ) MsgBox( "/" & str & "/" ) Function HTTPGet( strUrl ) on error resume next Call http.Open("GET", strUrl, False ) if Err.Number <> 0 then MsgBox(Err.Description) HTTPGet = Empty Exit Function end if on error goto 0 Call http.Send() HTTPGet = http.responseText End Function </script> <resource id="mydata"> この部分のみ取り出します </resource> </job>