BBCodeのリスト形式について知りたい

このQ&Aのポイント
  • BBCode(特定の文字列をHTMLタグに変換)を使用してリスト形式のテキストを表現する方法について調査しましたが、うまくいきませんでした。
  • リスト形式のテキストを表示するためには、[list]タグを使用する方法が推奨されていますが、具体的な使い方については見つけられませんでした。
  • リスト形式のテキストを表示するためには、[li]タグを使用することができるようですが、詳しい使い方や例文が不明です。
回答を見る
  • ベストアンサー

read.cgi等のタグの追加について

#------------------------------------------------- # BBCode(特定の文字列をHTMLタグに変換) #------------------------------------------------- sub bbcodecnv { my $str = shift; $str =~ s/\[b\](.*?)\[\/b\]/<b>$1<\/b>/ig; $str =~ s/\[i\](.*?)\[\/i\]/<i>$1<\/i>/ig; $str =~ s/\[u\](.*?)\[\/u\]/<span style=\"text-decoration:underline\">$1<\/span>/ig; $str =~ s/\[s\](.*?)\[\/s\]/<span style=\"text-decoration:line-through\">$1<\/span>/ig; $str =~ s/\[code\](.*?)\[\/code\]/<code>$1<\/code>/ig; $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/<a href=\"$jumpcgi?$1\" target=\"$target\" rel=\"nofollow\">$2<\/a>/ig; $str =~ s/\[color=(\#[0-9A-F]{6}|[A-Z]+)\](.*?)\[\/color\]/<span style=\"color:$1\">$2<\/span>/ig; return $str; } #------------------------------------------------- # BBCode削除 #------------------------------------------------- sub bbcodedel { my $str = shift; $str =~ s/\[b\](.*?)\[\/b\]/$1/ig; $str =~ s/\[i\](.*?)\[\/i\]/$1/ig; $str =~ s/\[u\](.*?)\[\/u\]/$1/ig; $str =~ s/\[s\](.*?)\[\/s\]/$1/ig; $str =~ s/\[code\](.*?)\[\/code\]/$1/ig; $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/$1/ig; $str =~ s/\[color=(\#[0-9A-F]{6}|[A-Z]+)\](.*?)\[\/color\]/$2/ig; return $str; } と初期設定でありますが、 リスト形式のものは、どういう風に書いたら 良いのでしょうか?? いろいろ調べて(試して)みたんですが、 できませんでした。 よろしくお願いします! ちなみに、 $str =からやっぱり始まるんでしょうか?

  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.2

これまた、めんどくさいことしたいんですねえ。 簡単に。 $str =~ s/\[list=1\](.*?)\[\/list\]/<ol style="list-style-type: decimal">$1<\/ol>/g; $str =~ s/\[list=A\](.*?)\[\/list\]/<ol style="list-style-type: upper-alpha">$1<\/ol>/g; $str =~ s/\[list=a\](.*?)\[\/list\]/<ol style="list-style-type: lower-alpha">$1<\/ol>/g; $str =~ s/\[list=I\](.*?)\[\/list\]/<ol style="list-style-type: upper-roman">$1<\/ol>/g; $str =~ s/\[list=i\](.*?)\[\/list\]/<ol style="list-style-type: lower-roman">$1<\/ol>/g; $str =~ s/\[list\](.*?)\[\/list\]/<ul style="list-style-type: disc">$1<\/ul>/ig; $str =~ s/\[\*\]/<li>/ig; でどうでしょう。 ただし、[list=○][/list]内にない[*]も<li>に変わります。 また、 [list] [*]aaa [*]bbb [/list] と書いたら<br>が自動で入るのでおかしくなるかも。 [list][*]aaa[*]bbb[/list] と書けばOK。 完全に対応させる気力はなかった。 ごめんなさい。 これは増やせば増やすほど負荷が増すので注意した方が良いです。

chopper_
質問者

お礼

大変な作業、誠にありがとう御座いました! テストでやってみたところ、成功しました!! 増やしたら、どんどん負荷がかかってしまうんですね・・・。 気を付けます。 ありがとう御座いました。m(__)m

その他の回答 (1)

  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

<blockquote></blockquote> を入れたい場合。 # フォームアイコン <a href="javascript:supphtml('blockquote');" title="引用"><img src="$imgurl/blockquote.png" border="0"></a> # BBCode(特定の文字列をHTMLタグに変換) $str =~ s/\[blockquote\](.*?)\[\/blockquote\]/<blockquote>$1<\/blockquote>/ig; # BBCode削除 $str =~ s/\[blockquote\](.*?)\[\/blockquote\]/$1/ig; # 改行をサニタイジング・BBCode削除(patio.cgi) $com =~ s/\[blockquote\](.*?)\[\/blockquote\]/$1/ig; これでもわからなければ、何を挿入したくて、どうやったかを書いてくれれば見てみます。

chopper_
質問者

お礼

例を教えて下さり、ありがとうございます。 何回か試してみたのですが、やっぱりできませんでした。 http://www.gemani-m.org/lpat-gemani/read.cgi?mode=view2&f=3&no=0027 ↑これを全部使いたいのですが、 一番上のもので言うと [*] # BBCode(特定の文字列をHTMLタグに変換) $str =~ s/\[*\](.*?)\[\/*\]/<*>$1<\/*>/ig; 一番最後 [list=1] [*] # BBCode(特定の文字列をHTMLタグに変換) $str =~ s/\[list\](.*?)\[\/list\]/<list>$1<\/*>/ig; 私のは、確実に間違ってる感じがしますね。 なんか無知で申し訳ありませんm(_ _)m

chopper_
質問者

補足

まとめると、 http://www.gemani.org/titi4/note.html ↑のBBCodeを使えるようにしたいです。

関連するQ&A

  • BBCode削除&改行をサニタイジングBBCode

    read.cgi #------------------------------------------------- # BBCode(特定の文字列をHTMLタグに変換) #------------------------------------------------- sub bbcodecnv { my $str = shift; $str =~ s/\[b\](.*?)\[\/b\]/<b>$1<\/b>/ig; $str =~ s/\[i\](.*?)\[\/i\]/<i>$1<\/i>/ig; $str =~ s/\[u\](.*?)\[\/u\]/<span style=\"text-decoration:underline\">$1<\/span>/ig; $str =~ s/\[s\](.*?)\[\/s\]/<span style=\"text-decoration:line-through\">$1<\/span>/ig; $str =~ s/\[code\](.*?)\[\/code\]/<code>$1<\/code>/ig; $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/<a href=\"$1\" target=\"$target\" rel=\"nofollow\">$2<\/a>/ig; $str =~ s/\[color=(\#[0-9A-F]{6}|[A-Z]+)\](.*?)\[\/color\]/<span style=\"color:$1\">$2<\/span>/ig; $str =~ s/\[list=1\](.*?)\[\/list\]/<ol style="list-style-type: decimal">$1<\/ol>/g; $str =~ s/\[list=A\](.*?)\[\/list\]/<ol style="list-style-type: upper-alpha">$1<\/ol>/g; $str =~ s/\[list=a\](.*?)\[\/list\]/<ol style="list-style-type: lower-alpha">$1<\/ol>/g; $str =~ s/\[list=I\](.*?)\[\/list\]/<ol style="list-style-type: upper-roman">$1<\/ol>/g; $str =~ s/\[list=i\](.*?)\[\/list\]/<ol style="list-style-type: lower-roman">$1<\/ol>/g; $str =~ s/\[list\](.*?)\[\/list\]/<ul style="list-style-type: disc">$1<\/ul>/ig; $str =~ s/\[\*\]/<li>/ig; return $str; } #------------------------------------------------- # BBCode削除 #------------------------------------------------- sub bbcodedel { my $str = shift; $str =~ s/\[b\](.*?)\[\/b\]/$1/ig; $str =~ s/\[i\](.*?)\[\/i\]/$1/ig; $str =~ s/\[u\](.*?)\[\/u\]/$1/ig; $str =~ s/\[s\](.*?)\[\/s\]/$1/ig; $str =~ s/\[code\](.*?)\[\/code\]/$1/ig; $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/$1/ig; $str =~ s/\[color=(\#[0-9A-F]{6}|[A-Z]+)\](.*?)\[\/color\]/$2/ig; $str =~ s/\[list=1\](.*?)\[\/list\]/$1/g; $str =~ s/\[list=A\](.*?)\[\/list\]/$1/g; $str =~ s/\[list=a\](.*?)\[\/list\]/$1/g; $str =~ s/\[list=I\](.*?)\[\/list\]/$1/g; $str =~ s/\[list=i\](.*?)\[\/list\]/$1/g; $str =~ s/\[list\](.*?)\[\/list\]/$1/ig; $str =~ s/\[\*\]/ig; return $str; } patio.cgi # 改行をサニタイジング・BBCode削除 $com =~ s/<br>/&lt;br \/&gt;/g; $com =~ s/\[b\](.*?)\[\/b\]/$1/ig; $com =~ s/\[i\](.*?)\[\/i\]/$1/ig; $com =~ s/\[u\](.*?)\[\/u\]/$1/ig; $com =~ s/\[s\](.*?)\[\/s\]/$1/ig; $com =~ s/\[code\](.*?)\[\/code\]/$1/ig; $com =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/$1/ig; $com =~ s/\[color=(\#[0-9A-F]{6}|[A-Z]+)\](.*?)\[\/color\]/$2/ig; $com =~ s/\[list=1\](.*?)\[\/list\]/$1/g; $com =~ s/\[list=A\](.*?)\[\/list\]/$1/g; $com =~ s/\[list=a\](.*?)\[\/list\]/$1/g; $com =~ s/\[list=I\](.*?)\[\/list\]/$1/g; $com =~ s/\[list=i\](.*?)\[\/list\]/$1/g; $com =~ s/\[list\](.*?)\[\/list\]/$1/ig; $com =~ s/\[\*\]/ig; エラーが出てしまいます。 どこがどう間違っていますか?? ※BBCode削除と 改行をサニタイジング・BBCode削除がたぶん ミスっていると思います。

    • ベストアンサー
    • Perl
  • 特定の文字列をHTMLタグに変換・urlについて

    #------------------------------------------------- # BBCode(特定の文字列をHTMLタグに変換) #------------------------------------------------- の中の、文字列なんですけれども $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/<a href=\"$jumpcgi?$1\" target=\"$target\" rel=\"nofollow\">$2<\/a>/ig; urlのものが、変になります。 http://www28.atpages.jp/wrsend1/patio/read.cgi?no=4 ↑みたいになってしまいます。 http://www.gemani.org/titi4/read.cgi?no=1391 ↑のように文字でリンクさせるにはどうしたらいいでしょうか。

    • ベストアンサー
    • Perl
  • CGI.pmのcheckboxの-labelにHTMLタグを含んだ文字

    CGI.pmのcheckboxの-labelにHTMLタグを含んだ文字列を渡すことはできますか 具体的には、CGI.pmのcheckbox関数を使って次のような文字列を生成したいです <label><input type="checkbox" name="abc" value="xyz" accesskey="A" />abc(<span style="text-decoration: underline">A</span>)</label> 次のソースでうまくいくと思ったのですが、 $q->checkbox(-name => 'abc', -value => 'xyz', -accesskey => 'A', -label => 'abc(' . $q->span({-style => 'text-decoration: underline'}, 'A') . ')') 実際に返される文字列は、 <label><input type="checkbox" name="abc" value="xyz" accesskey="A" />abc(&lt;span style=&quot;text-decoration: underline&quot;&gt;A&lt;/span&gt;)</label> のように-labelに指定したHTMLタグが&○○;のようにエスケープされてしまいました・・・(T_T)

    • ベストアンサー
    • Perl
  • 正規表現の部分が解読できません

    twitterをHPに読み込んでいるのですが ツイートでリンクを張ったさいに下記のような現象がおきます。 【ツイート内容】 詳細はhttp://ooo.ooo.comを見てください           ↑url部分にリンク 【HPに読み込まれた内容】 詳細はhttp://ooo.ooo.comを見てください           ↑<http://ooo.ooo.comを見てください>の部分にリンクが張られ            飛び先のURLも<http://ooo.ooo.comを見てください>となってしまう。 使用しているjsファイルは以下になります。(blogger.js) function twitterCallback2(twitters) { var statusHTML = []; for (var i=0; i<twitters.length; i++){ var username = twitters[i].user.screen_name; var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { return '<a href="'+url+'">'+url+'</a>'; }).replace(/\B@([_a-z0-9]+)/ig, function(reply) { return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; }); statusHTML.push('<li><span>'+status+'</span> <a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">'+relative_time(twitters[i].created_at)+'</a></li>'); } document.getElementById('twitter_update_list').innerHTML = statusHTML.join(''); } おそらく正規表現の部分が原因なのはわかるのですが どこを同いじったらいいかがわからず困っております。 アドバイスなどいただけましたら幸いです。 よろしくお願いいたします。

  • spanタグ 無視される

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>sample</title> <style type="text/css"> span.test{ padding: 6px 0px; background-color: gainsboro; text-align:center; border: 1px gray solid; margin-top:10px; margin-bottom:8px; color: gray; width: 100px; } </style> </head> <body> <span class="test"> <a href="#A"> A</a> </span> <br> <span class="test"> <a href="#B"> B</a> </span> </body> </html> ------------------------- というソースで spanタグで padding: margin-top:10px; margin-bottom:8px; width: が無視されてしまうのですが なぜでしょう? 更に画像のように文字が重なってしまいます。 padding: margin-top:10px; margin-bottom:8px; width: これらを適用させるにはどうすればいいでしょうか? AとBは隣同士に表示したいため、divではなく、spanを使用しました。

    • ベストアンサー
    • HTML
  • i-modeサイトのタグについて(xhtml)

    今週からi-modeサイト作成の勉強をはじめ、 下記のサイト作成をしています。 http://www.ismn.sega.co.jp/i/m/?uid=NULLGWDOCOMO だいたいそのまま作成することが出来たのですが、 リンクの下線を1つ1つ別の色にするやり方が分かりません。 例えば、 <a href=""><span style="color:#ff0078;font-size:small">歌詞</span></a> のように、フォントの色がff0078だった場合 リンクの下線の色もff0078に <a href=""><span style="color:#ff0078;font-size:small">カラオケ</span></a> のように、フォントの色が14A0BE場合 リンクの下線の色も14A0BEにしたいといった具合です。 このように全体のリンクの下線の色を 設定するやりかたしかわかりません。 <style type="text/css"> <![CDATA[ a:link{color:#0000ff} a:visited{color:#0000ff} ]]> </style> ちなみに、CSSは分かりません・・・ 丸暗記で、上記のようにすれば、下線の色が設定できる のを知っている程度です。 普通のxhtmlではなくi-mode対応のタグを教えていただければと思います。 分かる方がいましたらよろしくお願いします。

  • それぞれにオンマウス動作

    下記のタグで memberのオンマウス動作はできましたが、 live scheduleのオンマウス動作が分かりません。 (live scheduleもmemberとおなじようにそれぞれ独立してフェードインで出現させたいのです。) 色々試しても、オンマウスで同時にフェードインしたり、両方とも動かなくなったりでどうしたらいいか分からなくなりました。 教えてください。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> <style type="text/css"> <!-- p {    font-size: 50px; font-family: "MS PMincho"; text-decoration:none; } --> </style> <SCRIPT LANGUAGE="JavaScript"> <!-- // itv = 50; // cnt = 0; function strFade(str) { c = str.charAt(cnt++); document.all["ID"].style.color = "#"+c+c+c+c+c+c; if(cnt < str.length) setTimeout("strFade('" + str + "')",itv); if(cnt == str.length) cnt = 0; } //--> </SCRIPT> </head> <body> <div> <p style="margin-top: 200px;"> <p><b>   m </b></p> </div> <p style="margin-top: -20px;"> <p><span onmouseover="this.innerText='  live schedule'" onmouseout="this.innerText='    i'">     i </span></p> <p style="margin-top:-130px;"> <font color='#ffffff'> <SPAN id="ID"><span onmouseover="strFade('fedcba9876543210')" onmouseout="strFade('0123456789abcdef')"><p><a>   member</a></p></SPAN><BR><BR></font> </BODY> </HTML>

  • firefoxでのaタグ内imgへのスタイル指定

    aタグに対して以下のようにスタイルを指定しました。 a {color: #1a3300; text-decoration: underline;} a:hover {color: #ff6600; text-decoration: underline overline;} この時、aタグ内にイメージがある場合、IEやoperaではイメージに 対しては、text-decorationは効かないのですが、firefox2.0では イメージの背景にこのtext-decorationが出てしまいます。 何かこれを避ける良い方法はないでしょうか。 よろしくお願いします。

  • preg_replaceでタグだけ置換

    HTMLのタグを別のタグに置換しようとしています。 HTML中に複数ある<a></a>タグ <a href="/w/index.php?title=%E3%83%95%E3%82%B0%E3%83%AA%E3%83%BC%E5%B7%9D&amp;action=edit" class="new" title="フグリー川">フグリー川</a>など という文字列の<a></a>タグを<span style="color:#ff0000;"></span>に置換したいのです。 $pattern = '|<a href="/w/index\.php\?title=.*?">(.*)</a>|'; $replace = '<span style="color:#ff0000 ;">\\1</span>'; preg_replace( $pattern, $replace, $html, -1, $count); print $count; $countの表示は 1 でした。上記のような<a>タグは複数あるのに。 上記のような<a>タグをマッチさせるにはどうパターン表記したらいいでしょうか? PHP5.2.4です。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • すいません、このタグですが、自動で始まるようにならないでしょうか?

    <title>1行づつ画面上に出力する</title> <STYLE type="text/css"> <!-- div{font-size:20pt; } --> </STYLE> <script Language="JavaScript"><!-- str = new Array(); str[0] = "Sample text...(^^)/<br>"; str[1] = "1行づつ表示します。<br>"; str[2] = "By KaZuhiro FuRuhata<br>"; str[3] = "<a href='http://www.shiojiri.ne.jp/~openspc/'>OpenSpace</a>"; count = 0; function setTextLine() { if (count >= str.length) return; txt = ""; count++; for (i=0; i<count; i++) txt += str[i]; if (document.all) document.all["outText"].innerHTML = txt; setTimeout("setTextLine()",1000); } // --></script> </head> <body> <DIV id="outText" style="position:absolute;top : 167px;left : 112px;"></DIV> <DIV style="width : 139px;height : 76px;top : 10px;left : 146px; position : absolute; z-index : 1; " id="Layer1"><a href="javaScript:setTextLine()">出力開始</a></DIV> </body>