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

这通常使用正则表达式来完成,您可以在其中 google 链接正则表达式,您将获得大量示例和教程。但是,如果 $_POST['message'] 不是一个巨大的字符串并且不包含很多链接,您实际上可以在 [URL] 上展开,然后在 explode() 的数组结果中找到 [/URL] 并计算链接长度。从那里您只需要附加锚标记并 substr 链接,因为您已经知道原始数组元素的长度。

于 2013-06-02T19:34:21.903 回答