我希望能够采取用户输入的文本在一个评论字段,并检查URL类型的表达式,如果它存在,添加一个锚标记(到网址)时,显示的评论。
我在服务器端使用PHP,在客户端使用Javascript(使用jQuery),所以我应该等到URL显示之前再检查它吗?还是在插入数据库之前添加锚标记?
所以
<textarea id="comment">check out blahblah.com or www.thisthing.co.uk or http://checkthis.us/</textarea>
变成
<div id="commentDisplay">check out <a href="blahblah.com">blahblah.com</a> or <a href="www.thisthing.co.uk">www.thisthing.co.uk</a> or <a href="http://checkthis.us/">http://checkthis.us/</a></div>
8条答案
按热度按时间5q4ezhmt1#
首先,请求。不要在将数据写入数据库之前执行此操作。相反,在向最终用户显示数据之前执行此操作。这将减少所有混乱,并在将来为您提供更大的灵活性。
found online示例如下:
daringfireball.net中有一个更全面的例子:
yptwkmov2#
我修改了JonathanSampson的regex选项,使其对域的定义更加宽松(不需要http(s)来限定)。
适用于以下URL(并成功地省略了尾随句点或逗号):
希望这能帮上忙。
aor9mmx13#
这里是我的代码,格式化文本内的所有链接,包括电子邮件,网址和没有协议。
ct2axkht4#
改进Markd的回答,避免小数、百分比、数字日期(10.3.2001)、省略号和IP地址的链接:
工作对象:
网址:
网址:。
网址:
请登录。
包含%20个空格的测试网址**
不适用于:
123.com/test**(numeric domains without 'www')**
保持流行舆论的压力......保持平均水平**(省略号)**
增加3.8%,从379万增至394万**(百分比和小数)**
Andrew Brooke编辑-2013年8月7日19:57**(年、月、日)**
10.1.1.1**(IP Addresses)**
vkc1a9a25#
就我个人而言,我会在显示之前用JS标记它,看起来比自己编辑用户的评论更专业和可持续。
p8h8hvxi6#
我宁愿在服务器端做这些,Javascript有一个“滞后”;它只在整个HTML DOM树被加载并显示在Web浏览器中时才运行。因此,它可能需要(虽然很短)。客户端可能会看到链接立即被替换,而他仍然面对的内容。这可能会导致“wtf?”在客户端的经验。这是现在太快与广告/垃圾邮件/间谍软件。你应该尽可能避免这种情况。不要使用JS在加载时修改内容,而应该只在用户控制的事件(onclick,onchange,onfocus等)中修改。在保存或显示之前使用服务器端语言修改内容。
所以,只要找一个PHP脚本来解析文本(或使用正则表达式),以构建基于纯文本URL的完整链接,你就可以找到很多here。祝你好运。
flvlnr447#
简单地建议一个有用的插件在这里:一个月一个月一个月一个月
mi7gmzs68#
我已经得到了一个小的更新,接受的答案,也适用于链接没有协议(链接没有http(s)://)-之前,他们被链接,但作为相对链接,这是不工作。
我还为文档添加了一些注解。