输入可点击的电子邮件和网址

时间:2011-01-03 05:15:20

标签: php forms input

我有一个用PHP处理的表单。用户有时会将他们的电子邮件地址放在表单或URL中。在剥离标签输入后,这些通常以文本形式出现。

最近,当我们的用户拉出显示其输入的页面(现在从数据库中提取)时,我的用户开始要求我让他们的网址和电子邮件可以点击。

有人可以建议一个共同的模式或方法来处理这个问题吗?基本上,如果有人在表单中输入网址,如何在查看时将网址设为点击而不是文字?

谢谢, 亚历

2 个答案:

答案 0 :(得分:7)

您可以使用基于正则表达式的函数,例如

function  autolink($message) { 
    //Convert all urls to links
    $message = preg_replace('#([\s|^])(www)#i', '$1http://$2', $message);
    $pattern = '#((http|https|ftp|telnet|news|gopher|file|wais):\/\/[^\s]+)#i';
    $replacement = '<a href="$1" target="_blank">$1</a>';
    $message = preg_replace($pattern, $replacement, $message);

    /* Convert all E-mail matches to appropriate HTML links */
    $pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.';
    $pattern .= '[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)#i';
    $replacement = '<a href="mailto:\\1">\\1</a>';
    $message = preg_replace($pattern, $replacement, $message);
    return $message;

答案 1 :(得分:1)

你必须将网址包装在一个锚标记中:

假设$myLink是来自您的数据库的链接文本:

<a href="<?php echo $myLink; ?>"><?php echo $myLink; ?></a>