このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/563
#  ●正規表現の使用環境 
#  PHP5.3 
#   
#  ●検索か置換か? 
#  置換 
#   
#  ●説明 
#  ページ内にある<h2>〜<h6>に対して内側に<span>を入れたいです。 
#  hタグににclassがある場合なども想定されますがそれは引き継ぎたいです。 
#  何卒ご教授お願いいたします。 
#   
#  ●対象データ 
#  <h2>あああああ</h2> 
#  <h2 class="hoge">あああああ</h2> 
#  <h2><span>あああああ</span></h2> 
#  以下h6まで同様 
#  <h6>あああああ</h6> 
#  <h6 class="hoge">あああああ</h6> 
#  <h6><span>あああああ</span></h6> 
#   
#  ●希望する結果 
#  <h2><span>あああああ</span></h2> 
#  <h2 class="hoge"><span>あああああ</span></h2> 
#  <h2><span>あああああ</span></h2> 
#  以下h6まで同様 
#  <h6><span>あああああ</span></h6> 
#  <h6 class="hoge"><span>あああああ</span></h6> 
#  <h6><span>あああああ</span></h6> 
# 
# 

'ページ内にある<h2>〜<h6>に対して内側に<span>を入れたい'(_文字列,_置換された文字列) :-
        'Hタグを見つけて、情報を分離する'(_文字列,_前文字列,_前タグ,_中間情報,_後タグ,_後文字列),
        'spanタグを付加'(_中間情報,_spanタグに挟まれた中間情報),
        'ページ内にある<h2>〜<h6>に対して内側に<span>を入れたい'(_後文字列,_置換された文字列_2),
        concat_atom([_前文字列,_前タグ,_spanタグに挟まれた中間情報,_後タグ,_置換された文字列_2],_置換された文字列),!.
'ページ内にある<h2>〜<h6>に対して内側に<span>を入れたい'(_文字列,_文字列).

'Hタグを見つけて、情報を分離する'(_文字列,_前文字列,_前タグ,_中間情報,_後タグ,_後文字列) :-
        前タグ(_文字列,_前文字列,_前タグ,A,_残り文字列),
        '中間情報・後タグ・後文字列'(_残り文字列,A,_中間情報,_後タグ,_後文字列),!.

前タグ(_文字列,_前文字列,_前タグ,A,_残り文字列) :-
        sub_atom(_文字列,_,_,_,_前文字列,_前タグ,_残り文字列,L1,['<',h,A|R1],L3),
        選択できる数字(A),
        append(L1_1,['>'],R1),
        \+(member('>',L1_1)),!.

'中間情報・後タグ・後文字列'(_文字列,A,_中間情報,_後タグ,_後文字列) :-
        concat_atom(['<','/',h,A,'>'],_後タグ),
        sub_atom(_文字列,St,_,_,_中間情報,_後タグ,_後文字列,L1,L2,L3),!.

選択できる数字(A) :-
        member(A,['2','3','4','5','6']).

'spanタグの付加'(_中間情報,_spanタグに挟まれた中間情報) :-
        concat_atom(['',_中間情報,''],_spanタグに挟まれた中間情報).