preg_replace ile sorun

0 Cevap

Ben bağlantılar tıklanabilir yapmak için bu işlevi kullanın:

function clickable($text) {
   $text = preg_replace("/(https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}#-;+-\/_\.]*(\?\S+)?)?)?/u", '<a target="_blank" href="$0">$0</a>', $text);
   return $text;
}

Bu çalışıyor ama küçük bir sorun var. $ Metin değişkeni böyle bir dize içeriyorsa:

http://example.com

Bazı metin

i.e. link, line break(s) and Bazı metin, I get incorrect result. Instead of this:

<a target="_blank" href="http://example.com">http://example.com</a>

o olur:

<a target="_blank" href="http://example.com<br">http://example.com</a>
/>

Bazı metin

İşte benim sitede metin görüntülemek nasıl:

<?php echo clickable(nl2br($db['content'])); ?>

nl2br fonksiyon tüm çizgi <br /> etiketleri html içine kırar ama bu işlevi url bu etiketi tutmak gerektiğini düşünüyor dönüştürür ...

Ben açık değilim umarım :)

Herhangi bir fikir?

0 Cevap