PHP HTML köprüler içine düz metin URL'leri dönüştürmek

4 Cevap php

İnsanların düz metin alanı içine köprüler gönderebilirsiniz basit bir yorum sistemi var. Ben geri veritabanından ve web sayfası içine bu kayıtları görüntülemek zaman, PHP ne RegExp ben HTML-tipi çapa bağlantılar içine bu bağlantıları dönüştürmek için kullanabilirsiniz?

Ben sadece http ve https, algoritma bağlantının başka türlü bunu yapmak istemiyorum.

4 Cevap

Peki, Volomike cevabı çok daha yakın. Ve biraz daha ileri itmek için, burada bu köprülerin sonunda sondaki period göz ardı etmek için ne yaptım. Ayrıca URI fragmanları olarak.

public static function makeClickableLinks($s) {
  return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}

Böyle anında birçok şeyler yapmak için tavsiye etmiyoruz. Ben stackoverflow kullanılan gibi basit bir editör arayüzü kullanmayı tercih. Bu denir Markdown.

Ben voloMike cevabını istiyorum, ama bir süre doğrudan köprüyü takip edip çalışmıyor. Örneğin, metin ile sona erdi eğer: http://www.google.com/.

Bu durumda,. href eklenen alacağı = "" nitelik ve ayrıca etiketin iç HTML içinde olacaktır.

Verilen, orada ekstra bir nokta ise en sunucuları hala sayfayı teslim edecek, ama aynı zamanda hala hata beni ve drupal cms bazı sürümleri için sorunlara neden olur.

MkVal gelen cevabı çalışıyor ancak durumda biz zaten çapa bağlantı var, bu garip biçimde metni verecek.

İşte her iki durumda da benim için çalışan bir çözümdür:

$s = preg_replace ( 
    "/(?<!a href=\")(?<!src=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i",
    "<a href=\"\\0\" target=\"blank\">\\0</a>",
    $s
);