このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1362913813/397
# 質問です
#
# ●正規表現の使用環境
# PHP5.3.3
#
# ●検索か置換か?
# 置換
#
# ●説明
# ・URLが含まれていたときに、jpg,png,gifならimgタグへ変換。
# ・それ以外ならaタグへ変換。
# ・URLに日本語が含まれていた場合も、スペースや改行、文字列の終端にくるまでのものも上記のようにリンク化
#
# ●対象データ
# [1] こちらへ→http://ime.nu/example.com/index.html
# [2] 写真はこれです→https://example.com/写真.jpg
#
# ●希望する結果
# [1] こちらへ→<a href="http://ime.nu/example.com/index.html">http://example.com/index.html</a>
# [2] 写真はこれです→<img src="https://example.com/写真.jpg" />
#
#
'・URLが含まれていたときに、jpg,png,gifならimgタグへ変換。
・それ以外ならaタグへ変換。 '(_文字列,_imgタグ) :-
'URL部分の切り出し'(_文字列,_前文字列,_URL部分文字列,_後文字列),
'jpg,png,gifならimgタグへ変換。'(_前文字列,_URL部分文字列,_後文字列,_imgタグ),!.
'・URLが含まれていたときに、jpg,png,gifならimgタグへ変換。
・それ以外ならaタグへ変換。 '(_文字列,_imgタグ) :-
'URL部分の切り出し'(_文字列,_前文字列,_URL部分文字列,_後文字列),
'それ以外ならaタグへ変換'(_前文字列,_URL部分文字列,_後文字列,_imgタグ).
'jpg,png,gifならimgタグへ変換。'(_前文字列,_URL部分文字列,_後文字列,_imgタグ) :-
'jpg,png,gifなら'(_URL部分文字列),
'imgタグへ変換。'(_前文字列,_URL部分文字列,_後文字列,_imgタグ).
'jpg,png,gifなら'(_URL部分文字列) :-
sub_atom(_URL部分文字列,_,4,0,_サフィックス部分文字列),
member(_サフィックス部分文字列,['.jpg','.png','.gif']).
'imgタグへ変換。'(_前文字列,_URL部分文字列,_後文字列,_imgタグ) :-
atomic_list_concat([_前文字列,'
',_後文字列],_imgタグ).
'それ以外ならaタグへ変換'(_前文字列,_URL部分文字列,_後文字列,_aタグ) :-
'それ以外なら'(_URL部分文字列),
'aタグへ変換'(_前文字列,_URL部分文字列,_後文字列,_aタグ).
'それ以外なら'(_URL部分文字列) :-
sub_atom(_URL部分文字列,_,4,0,_サフィックス部分文字列),
\+(member(_サフィックス部分文字列,['.jpg','.png','.gif'])).
'aタグへ変換'(_前文字列,_URL部分文字列,_後文字列,_aタグ) :-
atomic_list_concat([_前文字列,'',_URL部分文字列,'',_後文字列],_aタグ).
'URL部分の切り出し'(_文字列,_前文字列,_URL部分文字列,_後文字列) :-
sub_atom(_文字列,S,Len,R,A),
member(A,['http://','file://','ftp://']),
S_2 is S + Len,
'URL部分の切り出し'(_文字列,S,S_2,_前文字列,_URL部分文字列,_後文字列).
'URL部分の切り出し'(_文字列,S,S_2,_前文字列,_URL部分文字列,_後文字列) :-
sub_atom(_文字列,S_2,_,0,_副文字列),
区切り文字で分割(_副文字列,_URL部分文字列,_後文字列),
sub_atom(_文字列,0,S,_,_前文字列),!.
区切り文字で分割(_副文字列,_URL部分文字列,_後文字列) :-
sub_atom(_副文字列,S,1,R,_文字),
member(_文字,[' ','\t','\n']),
sub_atom(_副文字列,0,S,R,_URL部分文字列),
sub_atom(_副文字列,_,R,0,_後文字列),!.
区切り文字で分割(_URL部分文字列,_URL部分文字列,'').