我正在处理一个喊话框的代码,我添加了以下代码来处理网址:
$shout_message = preg_replace('"\b(http://\S+)"', '<a href="$1"target="_blank">$1</a>', $shout_message);
$shout_message = preg_replace('#^ (?>((?:.*:/+)?[^/]+/.{1})) .{4,} (.{8})$ #x','$1...$2', $shout_message);
第一行标识URL并创建超链接,第二行截断URL例如,提交时,(第2页/ http://被删除,因为我不能发布超过2个链接)
HTTP:/www.google.com/#hl=en& sclient = PSY-AB&安培; Q =截断+ URL + PHP&安培; OQ =截断+ URL&安培; gs_l = hp.1.2.0j0i22i30l3.0.0.1.12.0.0 .0.0.0.0.0.0..0.0 ... 0.0 ... 1c..7.psy-ab.lWUgfxOY55k&安培; PBX = 1&安培; BAV = on.2,or.r_cp.r_qf&安培; BVM = bv.44158598 ,d.eWU&安培; FP = b2f671f2a036cfc1&安培; BIW = 1600&安培;波黑= 780
成为
HTTP:/www.google.com /#...= 780
这两个代码在大多数情况下都能正常运行。但是,如果在输入URL后有人输入并输入了其他消息,则超链接仍然有效,但该消息将成为截断字符串的一部分。例如,如果
输入HTTP:/www.google.com/#hl=en& sclient = PSY-AB&安培; Q =截断+ URL + PHP&安培; OQ =截断+ URL&安培; gs_l = hp.1.2.0j0i22i30l3.0.0.1.12.0.0 .0.0.0.0.0.0..0.0 ... 0.0 ... 1c..7.psy-ab.lWUgfxOY55k&安培; PBX = 1&安培; BAV = on.2,or.r_cp.r_qf&安培; BVM = bv.44158598 ,d.eWU&安培; FP = b2f671f2a036cfc1&安培; BIW = 1600&安培;波黑= 780 看看这个。
,然后截断的字符串显示为
http:/www.google.com /#...他的出局。
我可以添加任何内容,以帮助我的代码仅截断URL的一部分并单独留下尾随文本吗?