Http:// tıklanabilir ile başlar dize olun

6 Cevap

Http:// veya www tıklanabilir biriyle başlayan bir dize yapmak isteyen.

str_replace("http://", "$string", "<a href='$string'>");
str_replace("www", "$string", "<a href='$string'>");

bunun gibi bir şey olmamalı?

6 Cevap

Eğer böyle bir şey mi arıyorsunuz?

<?php
$content = 'this is a test http://www.test.net www.nice.com hi!';

$regex[0] = '|(http://[^\s]+)|i';      
$replace[0] = '<a href="${1}">${1}</a>';

$regex[1] = '| (www[^\s]+)|i';
$replace[1] = ' <a href="http://${1}">${1}</a>';

echo preg_replace($regex, $replace, $content);
?>

Update Thanks to macbirdie for pointing out the problem! I tried to fix it. However it only works as long as there is a space before the www. Maybe someone will come up with something more clever and elegant.

Kullandığım bir şey:

function linkify_text($text) {
  $url_re = '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@';
  $url_replacement = "<a href='$1' target='_blank'>$1</a>";

  return preg_replace($url_re, $url_replacement, $text);
}

Umarım bu yardımcı olur.

Ben görünmez kılan, metin çapa etiketi içinde yok olduğunu görüyoruz.

Ne aradığınız bir ifadedir. Bu gibi bir şey ...

$link = preg_replace('/(http:\/\/[^ ]+)/', '<a href="$1">$1</a>', $text);

str_replace argümanlar farklı bir düzen (sizin version $string ile <a href='$string'> in http:// tüm tekrarlarını değiştirmek istiyorum) sahiptir.

Eğer başka bir metnin içindeki html bağlantıları yapmak istiyorsanız, o zaman yerine normal bir yerine bu düzenli ifadeler gerekir:

preg_replace('/(http:\/\/\S+/)', '<a href="\1">\1</a>', $subject_text);

Birkaç tweaks ile Merkuro çözümü.

<?php
$content = 'this is a test http://www.test.net www.nice.com hi!';

$regex[0] = '`(|\s)(http://[^\s\'\"<]+)`i';      
$replace[0] = '<a href="${2}">${2}</a>';

$regex[1] = '`(|\s)(www\.[^\s\'\"<]+)`i';
$replace[1] = ' <a href="http://${2}">${2}</a>';

echo preg_replace($regex, $replace, $content);
?>

Desen:

(|\s)

Bir dize başlangıcını veya boşluk eşleşir. Ayrıca kelime sınır kullanabilirsiniz.

\b

Ben <, ', ", URL'leri sonlanan bir çift diğer karakter eklendi.