• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpで、ある文章の中から"["と"]"で囲まれた部分を取得して、取得)

phpで任意の文章内の[~]を置き換える方法

このQ&Aのポイント
  • phpの文章内で、[~]で囲まれた部分を取得し、その結果を元の文章内で置き換える方法について教えてください。
  • 具体的な例として、ある文章の中に複数の[~]があり、それぞれを別のデータと照合して置き換えたい場合の方法を教えてください。
  • また、取得したデータを元にリンクを作成する際の手順も教えていただけると助かります。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

preg_replaceでe修飾子を使います。 <? $content = "あいうえお[abcde]かきくけこ[fghij]さしすせそ"; $data=array( "abcde" => array("url"=>"aaa_abcde.html","title"=>"1つめ"), "fghij" => array("url"=>"bbb_fghij.html","title"=>"2つめ") ); $pattern="/\[(.*?)\]/e"; $replacement='"<a href=\"".$data[\'\\1\'][\'url\']."\">".$data[\'\\1\'][\'title\']."</a>"'; $content=preg_replace($pattern,$replacement,$content); print htmlspecialchars($content); ?>

srmsk
質問者

お礼

おかげさまで希望通りの結果が得られました。 助かりました、どうもありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • URLを見つけたら自動でリンク、タイトルを取得する

    よろしくお願い致します。 ------------- 引用元:http://aaa、http://bbb、http://ccc ------------- という文字列がある場合 ------------- 引用元:<a href="http://aaa" target="_blank">タイトルaaa</a>、<a href="http://bbb" target="_blank">タイトルbbb</a>、<a href="http://ccc" target="_blank">タイトルccc</a> ------------- に置き換える方法を考えています。 ------------- <?php // 対象文字列 $text = '引用元:http://aaa、http://bbb、http://ccc'; // パターン $pattern = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/u'; // 置換後の文字列 $replacement = '<a href="\1">\1</a>'; // 置換 $text= preg_replace($pattern,$replacement,$text); // 出力 echo $text; ?> ------------- で ------------- 引用元:<a href="http://aaa" target="_blank">http://aaa</a>、<a href="http://bbb" target="_blank">http://bbb</a>、<a href="http://ccc" target="_blank">http://ccc</a> ------------- までは行けたのですが、タイトルを取得する方法が分かりません。 http://otapps.net/archives/305 こちらを参考に考えたのですが、先に進めずにいます。 分かる方がいらっしゃいましたら、ご教示ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 秀丸エディタでHTMLの部分のURLだけ抜き出したい。

    秀丸エディターを使って <img src="/image/cam.gif"></td><td align=center nowrap><a href="http://aaa.com/1111"><a href="http://aaa.com/2222"><a href="http://bbb.com/1111"><a href="http://bbb.com/3333">....................... のURL部分の http://aaa.com/1111 http://aaa.com/2222 http://bbb.com/1111 http://bbb.com/3333 の部分だけを抜き出したいと思います。 よろしくお願いします。

  • MYSQLとPHPによって取得する多次元配列

    はじめてご質問させていただきます。 現在以下のようなテーブルが3つあります。 [ tbl1 ] | tbl1Key | title | | 1 | a | | 2 | b | | 3 | c | | 4 | d | [tbl2] | tbl2Key | tbl1Key | tbl3Key | | 1 | 2 | 2 | | 2 | 3 | 1 | | 3 | 3 | 4 | | 4 | 1 | 3 | [tbl3] | tbl3Key | value | | 1 | aaa | | 2 | bbb | | 3 | ccc | | 4 | ddd | 上記のデータソースを元に以下のような結果を得たいと考えています。 array( array( 'tbl1Key'=>1, 'title'=>'a', 'values' => array( array( 'tbl3Key'=>3, value='ccc' ) ), array( 'tbl1Key'=>2, 'title'=>'b', 'values' => array( array( 'tbl3Key'=>2, value='bbb' ) ), array( 'tbl1Key'=>3, 'title'=>'c', 'values' => array( array( 'tbl3Key'=>1, value='aaa'), array( 'tbl3Key'=>4, value='ddd' ) ), array( 'tbl1Key'=>4, 'title'=>'d', 'values' = > array( array( 'tbl3Key'=> , value='' ) ) ) この場合phpによって $sql = ("select * from `tbl1`"); $res = mysql_query( $sql, $con ); $data = array(); while( $row =mysql_fetch_object( $res ) ) { $sql = ("select * from `tbl3` inner join `tbl2` on `tbl3`.`tbl3Key`=`tbl2`.`tbl3Key` where `tbl2`.`tbl1Key`={$row->tbl1Key}"); $res2 = mysql_query( $sql, $con ); $tmp = array(); while( $r = mysql_fetch_object( $res2 ) ) { $tmp[] = $r->value; } $row->values = $tmp; $data = $row; } まずtbl1のデータをすべて取り、配列dataに格納する段階で、tbl1と関連付けされたtbl3のvalueを取得し配列tblに格納、それを新しい要素として配列dataにプッシュしている状況です。 こういったテーブルでいうところの1カラムのみ配列で返すような事は、こういったループを使って以外にも可能なのでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 秀丸エディタでHTMLの部分のURLだけ抜き出したい。

    秀丸エディターでマクロを使って <a href="http://aaa.com/1111"> <a href="http://aaa.com/2222"> <a href="http://bbb.com/1111"> <a href="http://bbb.com/3333"> の部分の http://aaa.com/1111 http://aaa.com/2222 http://bbb.com/1111 http://bbb.com/3333 の部分だけを抜き出したいと思います。 よろしくお願いします。

  • PHPで変数から1行目だけを取得したい

    変数に格納されたデータの1行目のaaaだけを取り出す方法を教えてください。 ※データはWEBサイトのURLリストで常に変動します。 複数行のデータ(\n区切り) 例) aaa   bbb   ccc 又は1行の半角カンマや半角スペースなどの文字で区切られたデータ 例) aaa, bbb,ccc,    aaa bbb ccc 上記のどちらかの形式で変数$dataに格納が可能です。 この$dataに格納されたaaaだけを取得するにはどうしたらいいのでしょうか? PHP初心者のためプログラムソースを書いていただけると助かります。

    • ベストアンサー
    • PHP
  • phpの正規表現

    いつもお世話になっています。 テキストの中から「hoge.jp/」で終わっているURLだけを取得したいです。以下なら2行目の2つだけを。 phpと正規表現で取得できる方法をご教授下さい! 1.<a href="ttp://nono-com.hoge.jp/index.php">いらないブログ</a> 2.<p><a href="ttp://aaa-com.hoge.jp/">aaaのブログ</a><a href="ttp://bbb-com.hoge.jp/">bbbのブログ</a></p> 3.<a href="ttp://nono-com.hoge.jp/iranai/blog/">いらないブログ</a> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPで配列を使ってHTMLソースを取得したいです

    RSSで取得したXMLの中身からURLを取得したのですが、 それぞれのソースをループ構文を使って取得する方法はありますか? XMLの中身を配列として表示すると ソース↓ $RSS_data = simplexml_load_file($RSS_url); $i=0; foreach($RSS_data->URL as $value){ $result [$i] ['URL'] = $value->URL; $i++; } echo "<pre>" ; print_r($result) ; echo "</pre>" ; 結果↓ Array ( [0] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [1] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www~ ) ) [2] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [3] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) こんな感じで続いていきます。 このURLの一つ一つのソースを取得したいのですがどうすればいいのでしょうか?

    • 締切済み
    • PHP
  • JSONファイルの読み込み

    {"note":[ {"content":"aaa", "title":"hoge"}, {"content":"bbb", "title":"hogehoge"} ]} 以上のような内容のファイル(note.json)を読み込んで、1つ目のtitle(hoge)を取り出し、 <a href="hoge.html" title="">link</a> のtitleの部分に挿入したいのですが、どなたかご教授お願いいたします。

    • ベストアンサー
    • AJAX
  • javascriptで2箇所のphpの関数を取得したいのです。

    javascriptで2箇所のphpの関数を取得したいのです。 見よう見まねでやっている初心者です。よろしくお願いします。 javascriptにてphpの関数をよびだしてhtmlのinput type="text"に値を出力しようとしています。 2か所のphp を下記のようにhtmlに書いて取得しようとしたのですがどちらか一方しか取得できません。 なんとか両方を読み込めるようにできないでしょうか?分かりにくい質問かと思いますので例を書いて見ましたのでどうかよろしくお願いいたします。 (例) <script type="text/javascript" src="../data/zzz.php?aaa=abc" ></script> <script type="text/javascript" src="../../../data/xxx.php?bbb=abc" ></script> 上記のように書いても片方しか取得しないようです。 以下../dataのzzz.phpのphpです。 <?php $aaa = $_GET['aaa']; header("Content-type: application/x-javascript"); echo "window.onload = function () {"; if ($aaa== 'abb') {echo "document.getElementById(\"xxx\").value=100;","document.getElementById(\"yyy\").value=1;";} elseif ($aaa == 'abc') {echo "document.getElementById(\"tanka\").value=120;","document.getElementById(\"yyy\").value=2;";} echo "}"; ?> 以下../../../dataのxxx.phpのphpです。(例) <?php $bbb = $_GET['bbb']; header("Content-type: application/x-javascript"); echo "window.onload = function () {"; if ($bbb== 'abb') {echo "document.getElementById(\"zzz\").value=50;","document.getElementById(\"vvv\").value=10;";} elseif ($bbb == 'abc') {echo "document.getElementById(\"tanka\").value=51;","document.getElementById(\"vvv\").value=20;";} echo "}"; ?> 以上2か所のディレクトリのphpを取得したいのですが、これはできない事なのでしょうか?ちがうディレクトリから取得しなければ更新作業が大変になってしまうのです。どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • データ取得

    name*****key1****key2****date ------------------------------- AAA*******1*******1*****2003/01 BBB*******2*******2*****2002/12 AAA*******1*******2*****2003/01 BBB*******1*******2*****2002/11 BBB*******2*******2*****2002/11 AAA*******2*******2*****2003/01 AAA*******2*******2*****2002/12 ------------------------------- (※全てのフィールドが同じ情報のレコードはない) ****は意味はありません。表を見やすくするために書いただけです。 上記のテーブルから下記のデータを取得したいと 考えています。 AAA*****2002/12*****1 AAA*****2003/01*****3 BBB*****2002/11*****2 BBB*****2002/12*****1 name列とdate列の重複しないレコードの件数を取得したいのですが どのようなSQLを記述すればよろしいでしょうか?