Htmlタグを preタグの中だけ下記の左側の文字から右側の文字にリプレースしてくれるPerlスクリプト

 

&	: &
"	: "
<	: &lt;
>	: &gt;

 


 

#!/usr/bin/perl
use warnings;
use strict;

my $flag = 0;
while(<>){
	chomp;
	$flag = 0 if m/^\<\/pre\>$/;
	if($flag){
		s/&/&amp;/g;
		s/\"/&quot;/g;
		s/\</&lt;/g;
		s/\>/&gt;/g;
	}
	s/^\s*$/&nbsp;/;
	$flag = 1 if m/^\<pre.*?\>$/;
	print "$_\n";
}

 


 
preタグが単独で置かれた行をトリガーにして置換のON/OFFを切り替えてます。
 
例えばcodeタグをトリガーにするのであれば、
 

$flag = 1 if m/^\<code\>$/;

 
とすれば良いと思いますが、インデントを再現したかったので今回はpreタグにしました。
 
なお、置換のこつは、&を最初に置換することです。
 

s/&/&amp;/g;

 
ちなみにこの部分↓
 

s/^\s*$/&nbsp;/;

 
は、空行を入れるために空白文字を一発挿入してます。
brタグがお好みなら、下記のように書き換えればOKだと思います。
 

s/^\s*$/\<br \/\>/;

 
最後に、もちろんこの記事のソースも、プレーンテキストで書いた文章を今回紹介したPerlスクリプトで変換して投稿しております。
 
 

§844 · Posted By · 8月 15, 2012 · Development · Tags: , , , · [Print]