重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

任意の文字列で囲まれていない任意の文字列を置換したいです。

たとえば、『 [[ 』と『 ]] 』で囲まれていない『http://hogehoge/』を『<a href="http://hogehoge/">http://hogehoge/</a>』に置き換えるにはどうすればいいのでしょうか。

具体的には下記の【置換前】のテキストを【置換後】のような感じにしたいです。

【置換前】
http://hogehoge/
[[http://hogehoge/]]
http://hogehoge/
http://hogehoge/ [[http://hogehoge/]]

【置換後】
<a href="http://hogehoge/">http://hogehoge/</a>
[[http://hogehoge/]]
<a href="http://hogehoge/">http://hogehoge/</a>
<a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]]

preg_replaceかereg_replaceのどちらかで例を挙げてもらえるとありがたいです。ご教示お願いします。

A 回答 (1件)

[[ と ]] で囲まれている中に目的の文字列以外のもの(ブラケットの直後と直前に空白とか)が


入ってこないということでいいなら、

<?php
$str = "http://hogehoge/
[[http://hogehoge/]]
http://hogehoge/
http://hogehoge/ [[http://hogehoge/]]
";

print($str);

$newstr = preg_replace('@(?<!\[\[)http://hogehoge/(?!\]\])@', '<a href="$0">$0</a>', $str);

print($newstr);


こんなんで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!