如何将文本URL转换为PHP页面中的可单击链接?

时间:2011-01-14 03:18:54

标签: php regex url

我确信这是一个非常简单明了的答案,但是我的脑子很油腻,我似乎无法得到它。我有一个PHP站点,允许用户将信息发布到mySQL中的文本字段。这些帖子都可以在线查看。在发布/编辑模式下,该字段是HTML表单中的textarea,在读取模式下是静态文本。用户希望能够在他们的帖子中包含一个URL并将其显示为可点击的链接,而不必在该字段中包含HTML(我不希望他们能够做到这一点 - 风险太大。)所以这是在显示数据时需要完成的事情,而不是在将文本保存到数据库时将html插入文本中。

显示的代码非常简单:

$query = "SELECT * FROM meetings where id=".$_GET['id'];
$result = mysqli_query($dbc, $query) or die('Error querying database');
$rows = mysqli_fetch_array($result);

echo "<p><div id=\"articleBody\">". $rows['body']. "</div></p>";

是否有一个我可以放在$ rows ['body']周围的函数,它会以http作为可点击链接显示任何内容?请记住,变量实际上可能包含或不包含URL。

2 个答案:

答案 0 :(得分:6)

使用preg_replace来完成此任务:

$html = preg_replace('"\b(http://\S+)"', '<a href="$1">$1</a>', $rows['body'])
echo "<p><div id=\"articleBody\">".$html."</div></p>";

答案 1 :(得分:0)

$out = $rows['body'];

echo "<p><div id='articleBody'>";

if(substr($out,0,4)=='http') { echo "<a href='#'>".$out."</a>"; }
else { echo $out; } 

echo "</div></p>";