0

私はこのPHPコードを持っています:

$y = $_POST['message'];

$pre = htmlspecialchars($y, ENT_QUOTES);

$msg = str_replace("&lt;br&gt;", "<br>", $pre);

これにより、変換されたすべての <br> (<b>) が <br> に置き換えられます。そして、フォーラムのように、すべてのリンクで同じことを(まあ、ほとんど)やろうとしています。例...

http://www.example.com

次のようにラップする必要があります。

<a href="http://www.example.com">http://www.example.com</a>

より簡単であれば、[URL] [/URL] の方法、[IMG] [/IMG] の方法をお勧めします。

誰かが私を正しい方向に向けることができますか? 私はここで何時間も探していましたが、私のニーズに合うものは何もありません:/

4

2 に答える 2

1

それを行う非常に簡単な方法:

$input = '[URL]xxx[/URL]';

$url = explode('[URL]', $input);
$url = explode('[/URL]', $url[1]);
$url = '<a href="' . $url[0] . '"/>Link</a>';

echo $url;

これを行うためのより良い方法は間違いなくあります。おそらく正規表現またはpreg_replaceを使用します。

于 2013-06-02T19:36:53.980 に答える
0

これは通常、正規表現を使用して行われます。正規表現をグーグルリンクすると、多くの例とチュートリアルが提供されます。ただし、$_POST['message'] が巨大な文字列ではなく、多くのリンクが含まれていない場合は、[URL] で実際に展開してから、explode() の配列結果で [/URL] を見つけて、リンクの長さ。元の配列要素からの長さは既にわかっているので、そこからアンカー タグを追加し、リンクを substr にするだけです。

于 2013-06-02T19:34:21.903 に答える