web404

HTMLの予約文字をHTMLエンティティに変換するマクロ

HTMLの予約文字をHTMLエンティティに変換します。
具体的には、「&」「<」「>」「"」「'」をHTMLエンティティに変換します。

選択範囲を対象とし、範囲選択していなければファイル全体を対象とするか実行しないかをユーザーに確認します。
また、すでにHTMLエンティティを含むテキストでは「&」が再変換されてしまうので、マクロを実行する際に「&」を変換するかどうかをユーザーに確認します。
実行後にテキストをコピーすることも多いので、対象の範囲選択を維持します。

BOX選択や複数選択には対応していません。
秀丸エディタ Version 9.16以降が必要です。

ちなみに、このページに載せているソースコードも、このマクロを使って変換したものです。

ダウンロード

htmlrc.zip

更新履歴

Version 1.01 (2023/12/4)
  • 変換する対象がなければ警告音を出し、置換しないようにした
Version 1.00 (2023/11/11)
  • 公開

ソースコード

if (!selecting) {
	question "ファイル全体を対象に実行しますか?";
	if (result) selectall;
	else endmacro;
}

#xt = seltopx; #yt = seltopy;
$str = gettext(seltopx, seltopy, selendx, selendy, 1);
$str0 = $str;

if (strstr($str, "&") > -1) {
	question "「&」を「&amp;」に変換しますか?";
	if (result) $str = strreplace($str, "&", "&amp;");
}
$str = strreplace($str, "<", "&lt;");
$str = strreplace($str, ">", "&gt;");
$str = strreplace($str, "\"", "&quot;");
$str = strreplace($str, "'", "&apos;");

if ($str == $str0) {
	beep;
	endmacro;
}

disabledraw;
begingroupundo;

insert $str;
#xe = x; #ye = y;
moveto #xt, #yt;
beginsel;
moveto #xe, #ye;
endsel;

endgroupundo;
enabledraw;
endmacro;

機能的には、PHPのhtmlspecialchars関数と同じ変換を、秀丸マクロで行うものです。

strreplace関数を使っているので、このマクロを実行するにはVersion 9.16以降が必要です。
やっぱり、テキストエディタで文字列置換関数を使えるのは便利です。