2009-06-29 13 views
1

http://またはwwwのいずれかで始まる文字列を作成します。http:// clickableで始まる文字列を作成します。

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

そうでないはずですか?

+1

あなたを忘れないでくださいリンクテキストとクローズ – balpha

+3

また、Jeffのブログ記事でURLの最後を見つけることに興味があります:http://www.codinghorror.com/blog/archives/001181.html – balpha

答えて

0

アンカータグの中にテキストが表示されていないので、見えなくなります。

3

このようなものをお探しですか?問題を指摘するためにmacbirdieする

<?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); 
?> 

更新 ありがとう!私はそれを修正しようとしました。しかし、wwwの前にスペースがある限り動作します。たぶん、誰かがもっと巧妙でエレガントなものを考え出すでしょう。

+1

おそらく、www.test.comとしてちょっとした調整が必要ですが、間違ったURLを作成します。 – macbirdie

0

あなたが探しているのは正規表現です。このような何か...

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

str_replaceが異なる引数の順序(バージョンが$string<a href='$string'>http://のすべての出現箇所を置き換えます)があります。

preg_replace('/(http:\/\/\S+/)', '<a href="\1">\1</a>', $subject_text); 
1
function clicky($text) { 
    $text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_+.~#?&//=]+)', '<a href="$1">$1</a>', $text); 
    $text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_+.~#?&//=]+)', '$1<a href="http://$2">$2</a>', $text); 
    $text = eregi_replace('([_.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})', '<a href="mailto:$1">$1</a>', $text); 
    return $text; 
} 
0

Merkuroのソリューションをいくつかの調整を:あなたは、いくつかの他のテキスト内のHTMLリンクを作成したい場合は

は、その後、あなたは交換する代わりに、正規の本のための正規表現を必要とします。

<?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); 
?> 

パターン:

(|\s) 

は、文字列、またはスペースの始まりにマッチします。単語境界を使用することもできます。

\b 

私は、URLを終了夫婦他の文字、」、」、<を追加しました私が使用

2

何か:。。

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); 
} 

・ホープこのことができますを