我不知道这是否可行,但我有一段纯文本,其中包括:
http://www.royalmail/portal/etc/etc/track.php?trackNumber=123345323
当从数据库拖到我的页面时,这显然不会呈现为链接。有没有办法选择这段文本(即通过http://
),最基本的用锚标签包装 - 或者更复杂 - 检索地址,用锚标签包裹地址,并更改原始文本http://
发送更易于理解的内容,例如“Track Parcel”
应该注意的是,可能会有很多跟踪引用同时出现。
我的HTML包含如下
<div class="message_holder">
<div class="mess_head" style="width:110px;">
<p><strong>Sender: </strong><? echo $row11['sender'];?></p>
</div>
<div class="mess_head" style="width:450px;">
<p><strong>Subject: </strong><span class="red"><? echo $row11['subject'];?></span></p>
</div>
<div class="mess_head" style="width:150px;">
<p><strong>Date Sent: </strong><? echo date('d/m/Y, H.ia', $row11['date_sent']);?></p>
</div>
<div class="mess_head" style="width:200px;">
<p><strong>Message ID: </strong><? echo $row11['message_id'];?></p>
</div>
<div class="mess_body">
<p><? echo html_entity_decode($row11['message']);?></p>
</div>
</div>
纯文本链接将全部显示在“mess_body”类中。我尝试过使用html_entity_decode()
,但这并没有成功。如果有一种简单的方法可以通过PHP而不是JQuery来实现这一点,那么它可能更简单。
答案 0 :(得分:3)
我会用PHP做到这一点:
$text = preg_replace(
'@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@',
'<a href="$1">$1</a>', /* or <a href="$1">Your TEXT</a> */
$text
);
如果我猜对了,网址可以在你的留言中,所以你的代码应该是这样的:
<?php
echo
preg_replace(
'@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@smi',
'<a href="$1">$1</a>',
html_entity_decode($row11['message'])
);
?>