我正在编写一个喊话框的代码,并添加了以下代码来处理 URL:
$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 例如,提交时,(http:// 中的第二个 / 被删除,因为我不能发布超过 2 个链接)
http://www.google.com/#hl=en&sclient=psy-ab&q=truncate+url+php&oq=truncate+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&bih=780
变成
http://www.google.com/#...=780
这两个代码在大多数情况下都可以正常工作。但是,如果有人在输入 URL 后键入和附加消息,超链接仍然有效,但该消息成为截断字符串的一部分 例如,如果
http://www.google.com/#hl=en&sclient=psy-ab&q=truncate+url+php&oq=truncate+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&bih=780 看看这个。
键入,则截断的字符串显示为
http://www.google.com/#...他出局了。
有什么我可以添加的东西可以帮助我的代码只截断 URL 的一部分并留下尾随文本吗?