0

これが可能かどうかはわかりませんが、常に含まれるプレーンテキストがあります。

http://www.royalmail/portal/etc/etc/track.php?trackNumber=123345323

データベースから私のページにドラッグすると、これは明らかにリンクとしてレンダリングされません。このテキストを選択する方法はありますか (つまり、 経由でhttp://)、最も基本的な方法でアンカー タグでラップします。または、より複雑に、アドレスを取得し、アドレスをアンカー タグでラップし、元のhttp://テキストをよりわかりやすいものに変更します。 「小包の追跡」など

一度にループアウトされた多数の追跡参照が存在する可能性があることに注意してください。

私の含む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()ましたが、これはうまくいきませんでした。JQuery ではなく PHP を介してこれを行う簡単な方法があれば、より簡単になる可能性があります。

4

1 に答える 1

3

私はPHPでそれを行います:

$text = preg_replace(
    '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', 
    '<a href="$1">$1</a>', /* or <a href="$1">Your TEXT</a> */
    $text
);

私が正しいと思う場合、URL はメッセージに含まれている可能性があるため、コードは次のようになります。

<?php 
    echo 
     preg_replace(
        '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@smi', 
        '<a href="$1">$1</a>',
        html_entity_decode($row11['message'])
     );
 ?>
于 2013-01-13T09:56:39.247 に答える