ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:特定の文字列をHTMLタグに変換・urlについて) 特定の文字列をHTMLタグに変換・urlについて 2011/06/16 19:17 このQ&Aのポイント BBCodeを使用して特定の文字列をHTMLタグに変換する方法についてご質問されています。また、URLが正しく変換されずに表示されてしまう問題にも取り組んでいます。URLをリンクとして表示させる方法についてアドバイスをいただけると幸いです。 特定の文字列を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 ↑のように文字でリンクさせるにはどうしたらいいでしょうか。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー mikemike7 ベストアンサー率87% (97/111) 2011/06/16 19:38 回答No.1 $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/<a href=\"$jumpcgi?$1\" target=\"$target\" rel=\"nofollow\">$2<\/a>/ig; を $str =~ s/\[url=((?:htt|ft)ps?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+)\](.*?)\[\/url\]/<a href=\"$1\" target=\"$target\" rel=\"nofollow\">$2<\/a>/ig; にする。 デフォルト http://www.kent-web.com/bbs/patio.html 使ったらどうです? いろいろ改善したいところがあるようですが、 こういう無駄な機能はないです。 質問者 お礼 2011/06/16 20:10 ありがとうございます。 これでたぶん最後だったので、助かりました。 デフォルトでは、ありきたりだったので。 無駄ではないと思います。 教えて下さりありがとう御座いました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Perl 関連するQ&A CGIの掲示板で使うBBcodeなどついて どうしても使いたいBBcodeがあるんです。 最新のバージョンで、きりしま式 Web Patio LibertyVerをテストで作成途中なんですけれども、 コメントを書く欄で、[list]系のものがまったく使えないのですが、 どうしたら使えるようになるのでしょうか?? あと、リンクにジャンプできないので どうすればよいでしょうか?? ↓が今、作成中のものです。 http://www28.atpages.jp/wrsend1/patio/read.cgi?no=2 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 =からやっぱり始まるんでしょうか? クッションを踏まない場合 http://www28.atpages.jp/wrsend1/patio/read.cgi?no=2 ↑リンクのことなんですが、 クッションを踏まない場合の設定はどうすればいいでしょうか?? ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム リンクについて http://www28.atpages.jp/wrsend1/patio/read.cgi?no=2 ↑リンクが他サイトと共有できないとかいって ジャンプできないのですが、つなげるようにするには どうすればよいでしょうか?? 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>/<br \/>/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削除がたぶん ミスっていると思います。 URLに含まれる可能性がある文字列は? こんにちは、よろしくお願いいたします。 ※カテゴリーが分からなかったのでこちらに質問させていただきました。 カテ違いならご指摘下さい。 複数行のテキストファイルの内容からURLを抽出するエクセルVBAを作成しようとしています。 (質問の趣旨はエクセルVBAについてではありません) 各行の内容はURLのみの行、URLが他の文字列に挟まれている行、URLは全く含まれていない行 があります。 URLがハイパーリンクされないようにするため、あるいはURLとなされないようにするために ttpやtpで始まるものは無視してよいです。 「ht tp」や「h ttp」としたものはURLとみなします。(スペースを削除するので問題とならない) 問題となっているのは、httpが含まれると判断した行を「http」で区切った右側のどこまでを URLと看做すか、です。 そこでネット検索してみましたが、「URLで使用できない文字列」というのはいくつか見つかり ましが、たとえば、予約語なのでURLに使用できない文字列は使用できないだけであってURLに は含まれる可能性があります。 「URLに含まれる可能性がある文字列」を調べたいのですがネット検索で見つかった物は明確 に示したものが見つからなかった(検索の仕方が悪かった、あるいは明確に示したものがあって も見方が悪くて見落としていた、というのもあるかと思います)ので開発者や詳しい者でなくて も理解できるように書かれたHPがあれば紹介していただきたいです。直接解説していただくの は大いに歓迎します。 いままでネット検索して見たことがあるページです。 見てもいまいち理解できませんでした。 http://datatracker.ietf.org/doc/rfc3986/ http://datatracker.ietf.org/doc/rfc3986/?include_text=1 http://jbpe.tripod.com/rfcj/rfc2396.ej.sjis.txt http://okwave.jp/qa/q247115.html http://www.ipentec.com/document/document.aspx?page=web-url-invalid-char&culture=ja-jp http://www.ipentec.com/document/document.aspx?page=web-url-invalid-char&culture=ja-jp ↑を見た限りでは、URLに含まれる可能性がある文字列は 問題なく使える文字列 A~Z A~z 0~9 使用可能な文字列 - _ . ! * ' ( ) 予約語として定義されている文字 使用できるがディレクトリ名やファイル名には使用できない ; / ? : @ & = + $ , % ところが、 >URLに含めることのできない文字 >以下の文字はURLに含まれない文字です。 \ ' | ` ^ " < > ) ( } { ] [ と書いてあり、 ) ( は「使用可能な文字列」と「URLに含めることのできない文字」 の両方に書かれており混乱しております。 結局のところ、URLに含まれる可能性がある文字列が把握しきれ ておりません。 ご教示よろしくお願いいたします。 携帯からアクセスされた場合、URLの一部を変換したい 現在、BBSのCGIから生成されるRSS内容を、RSSリーダのCGIを使ってリンク表示にしています。 そのリンクにアクセスした場合、 例 PCでは : http://www,xx.com/cgi/read.cgi?no=1(通常のアクセス) 携帯では : http://www,xx.com/cgi/m_read.cgi?no=1(m_read.cgiに部分変換) という風に、アクセスさせたいのですが、携帯からのアクセスのみURLの一部を変換(read.cgi⇒m_read.cgi)する手段はありませんでしょうか? お詳しい方いらっしゃいましたらお教えいただけると嬉しいです。 よろしくお願いいたします。 エクセルのセル内の文字列から抽出したい A列に <a href="http://URL/" target="_blank">サイト名</a> という文字列が1000個くらい入っています。 B列にURL部分のみ、C列にサイト名のみを取り出したくて、 B1に左から9文字を削って =SUBSTITUTE(A1,LEFT(A1,9),"") とか入れてみるのですが、これだとURL部分以降の " target="_blank">サイト名</a> が残ってしまいます。 C1には何を入れたら前後の文字列が削除できてサイト名だけになるのかもわかりません。 URLはセルごとに文字数が違うので、どの関数を使えば一括で B1にURL、C1にサイト名が表示されるようになるかアドバイスをお願いいたします。 EXCEL2007で文字列の右側から特定文字を抽出 EXCEL2007で1つのセルの文字列の右側から最初の"/"が出現したときまでの文字を抽出する方法を教えてください。 (例) A 1エクセル/関数/123456/ここがターゲット 2 3 ⇒関数を使用し、上記A1セルの「ここがターゲット」の文字列を抽出したいのです。 神様、どうか教えてください! URLの文字列判定のプログラムについて javascriptの質問です URLを取得し、そのURL内に 「aaa」という文字列が含まれていたらAという文字列を返し 「bbb」という文字列が含まれていたらBという文字列を返し どちらにもあてはまらない場合は、Cという文字列を返す というプログラムを作成したいのですが、方法がわかりません どのようにプログラムを書けばよいのでしょうか お手数ですが教えてください よろしくお願いいたします 特定の文字列を抜き出す。 javaでrdfファイルへのURLを抜き出そうと思っています。 具体的にはhttp:からindex.rdfという文字列を 抜き出したいのですが、 String型のlineという変数に a.(http:*************index.rdf)だけ含まれている文字列と b(http:*********foaf.rdf ***************** http:***************index.rdf) のような含まれ方をしている文字列があります。 aの場合はsubstringメソッドを使って httpの現れる場所からindex.rdfが現れる場所をindexOfメソッドで求めて抜き出せばよいのですが、 bの場合最初のhttpから最後のindex.rdfまで読み出されます。 index.rdfのついたhttpから文字列を抜き出す方法は ないでしょうか?お願いします。 utf-8の文字列に対してURLエンコードを行なうには? 最近 perlをutf-8で書き始めたのですが、文字コードではまっています。 cgiの内部から別のcgiへpostで全角文字を送る場合 URLエンコードしてから送ると思うのですが 文字コードがutf-8の時、どのようにURLエンコードしたら 良いのか分からず困っています。どなたかご存知でしょうか? ちなみに文字を受ける方のcgiでは以下の様にURLデコードしています。 $data =~ tr/+/ /; $data =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; 試用しているperlのバージョンはperl5.8です、よろしくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム PHP正規表現の特定文字列を省く場合 PHPを仕事で少し使用しております、Webデザイナーです。知識が少なく、正規表現での疑問がどうしても解決出来ずに困っております。限界を感じ質問させていただきました。どうぞよろしくお願いいたします。 PHPでURLにリンクを設定しております。文字列の中の「http」などで始まるURLにリンクを付けることは問題ないのですが、その中で「[nolink]http」といった特定の文字列が頭についているURLのみリンクを付けないようにしたいと考えております。ソースは以下の通りですが、上手くいきません。?!の個所を色々変えてみましたが、正しく認識されないorエラーが出てしまいます。 $body = preg_replace("/((?!\[nolink\])(https?|ftp)(:\/\/[A-Za-z0-9\+\$\;\?\.%,!#~\*\/:@&=_\-]+)/", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $body); そもそもの考え方が間違っているのか、中途半端な知識のため解決の糸口がつかめません。どうぞご教授頂けますようお願いいたします。 特定文字列の抽出 VB6の質問です。 桁数、データが不定の文字列中から特定文字を抽出したいのでが、方法を教えていただけないでしょうか? 抽出したいデータの桁数が毎回不定でMid, Left, Right関数が使用できません。 Dim Buffer As String Buffer = "A12345...B678910.TRAGET..C" '桁数、データが不定の文字列がBufferに入ります。 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 InStr関数で、位置を特定して、Mid関数などで抽出するれば、良いと思うのですが これをどんな桁数のときも対応できるようにルーチン化にできないでしょうか? 文字列を取り出す A列に[ No.××× ] あああああ・・・と入力されています。 毎回入力される行数が違います(100~300行) B列にNo.×××という文字列だけ取り出すために下記の関数が入っているのですが A列に入力のあった分だけをマクロで処理できませんか。 =LEFT(RIGHT(A2,LEN(A2)-FIND("[ No",A2,1)),8) 現在は300行目までこの関数が入った状態で、エクセルが重い気がします。 ExcelでURL文字列を連続して挿入させたい Excelで、A1、A2、A3と連続して、URLの文字列が入っていて、 B1に、イメージを挿入するHTMLタグ<img src="">があり、 <img src="A1"> <img src="A2"> <img src="A3"> のようにURL文字列をB1に挿入させたいのです。 自分で試しましたところ、 =CONCATENATE("<img src=""", A1, """>")でしたら、1個はできますが、 <img src="A2"> <img src="A3">というように、連続してB1内に挿入する事ができません。 どのようにすれば良いか関数を教えていただけないでしょうか。 よろしくお願いいたします。 文字列中からある文字列とある文字列の間にある文字列を取得 表題にあるとおり間の文字列をどうやって取得するべきかと悩んでいます・・ abcdefghijklmn・・・ となっているとき bとe、aとkなど間の間隔が不定なときはどのようにして文字列を取得したらよいのでしょうか? 最初の2文字は与えられているとして考えています。 インターネットのURLで言うなら/から/までの間の文字列と言うことになります。 今私が考えているのは strchrで位置のアドレスを取得してそこからfor文かwhile文で指定の2文字目が出るまでまわすのかなぁ・・と思っています。 ですが具体的にどのような感じに書けばいいのかがわかりません。どなたかご教授ください。 ■別ページにcgiで入力した文字列をリンクする方法■ いつもお世話になっております。 php、cgiともに初心者です。 作成と質問投稿のPC環境がその時によって違うことがあります。(作成は会社、投稿は自宅など) 今回いきづまっていることも、どう説明してよいのか分からないため、分かりにくい説明になるかとは思いますが出来るだけ詳しく説明したいと思いますのでどうぞよろしくお願い致します。 a.phpとb.phpという二つのPHPページがあり、b.phpにはcgiで入力したCという文字列(外部URL)があります。 これをb.phpページ内では別の場所にCというリンクを貼ることが出来ました。 しかしCというリンクをa.phpにも貼りたいのですがうまくいきません。 <?= $St_d ?>といった呼び出しをしてdの文字列は呼び出せているのですが、同じように<?= $St_C ?>としてもCという文字列さえ呼び出せません。 a.phpにb.phpにあるCというリンクを呼び出すにはどうすれば良いでしょうか? ちなみに目標としているのは ・画像リンク(htmlでいう<a href="C" target="_blank"><img src=”img.gif” border="0"></a>を使いたい) ・別ウィンドウ表示(htmlでいうtarget="_blank"を使いたい) です。 必要な情報、分かりにくい点がありましたら教えて下さい。 宜しくお願い致します。 jqueryで文字列を置換したいのですが。 jqueryで文字列を置換したいのですが。 例えば<a href="http://*****/database.cgi?keys10=検索文字01"> みたいなアンカーがあったとして、これの”検索文字”の部分のみを置換して 例えば<a href="http://*****/database.cgi?keys10=検索文字02"> の様に置換することは可能でしょうか。 何卒、宜しくお願いいたします<m(_ _)m> VBAで文字列を数値に変換したい こんにちは! システムから自動で出力されるExcelファイルがあります。そのファイルを開くと数値が文字列として認識されています。いつも数値に直しているのですが、下記の方法でなおしています。 エラー チェック機能を使用して文字列形式の数値を変換する 他にも文字列を数値になおす方法は下記URLを参考にしています。 http://office.microsoft.com/ja-jp/excel-help/HP010342308.aspx ただ、これをVBAで変換できないかと思っています。 例えば、A~G列まで文字列データがはいっています。このA~G列のデータをVBAで一気に数値化したいのですが、どのようにすればおこなえるでしょうか? 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
ありがとうございます。 これでたぶん最後だったので、助かりました。 デフォルトでは、ありきたりだったので。 無駄ではないと思います。 教えて下さりありがとう御座いました。