私はシャウト ボックスのコードに取り組んでおり、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 を識別し、ハイパーリンクを作成し、2 番目の行は URL を切り捨てます。たとえば、送信時に、(http:// の 2 番目の / は、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 の一部のみを切り捨て、末尾のテキストをそのままにしておくのに役立つ追加できるものはありますか?