• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブログなどでよく使われる記法からタグへの変換)

ブログなどでよく使われる記法からタグへの変換

このQ&Aのポイント
  • ブログなどでよく使われる記法から、タグへの変換方法を知りたいです。
  • http://www.test.com/:title=てすとぺーじ を <a href="http://www.test.com/">てすとぺーじ</a> に変換したいです。
  • ereg_replaceを使って記法からタグの変換を試みましたが、上手く置換できませんでした。他に有効な方法はありますか?

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

  • ベストアンサー
  • takana_
  • ベストアンサー率44% (21/47)
回答No.2

preg_replace("/\[http:(\/\/.*?):title=(.*?)\]/", "<a herf=http:\1>\2<\/a>", $string); ではないでしょうか? 未検証 \1に「//www.test.com/」 ← 1個目のカッコ「(\/\/.*?)」に相当 \2に「てすとぺーじ」 ← 2個目のカッコ「(.*?)」に相当 が格納されると思います。 ただし、マルチバイト文字列なので、 mb_ereg_replace関数を使うべきかも?

Dhio
質問者

お礼

返信送れてすいません。 回答くれた文のpreg_replaceで\1のところを \\1にしたらできるようになりました。 ・置換が成功した文 $item_naiyou = preg_replace("/\[link_url=http:(.*?):title=(.*?)\]/", "<a href=http:\\1>\\2</a>", $item_naiyou); 変数やpreg_replace内のパターンなどは例とは異なりますが 一応完成文です。 これでわざわざ何行にもわけて文を書かずに一行で置換ができるようになりましたので大変助かりました。回答の方ありがとうございました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

ereg_replaceが受け付ける正規表現では +? のような最短マッチは使えないのでは?

Dhio
質問者

補足

ereg_replaceが最短マッチを受け付けないと言われて、他に色々方法を探して試してたら一応それらしい文ができたので載せます。 $match_all = preg_match_all("%<b>(.+?)<\/b>%is", $str, $item); for ($i=0; $i< $match_all; $i++){ $name_match = $item[1][$i]; } $item_naiyou = ereg_replace("<b>$name_match<\/b>","$name_match",$str); 記法からタグの変換で、遠回りな文になってしまいましたが。ありがとうございました。

関連するQ&A

専門家に質問してみよう