2011-06-30 7 views
1

コロン ':'の最初の出現箇所を見つけ、その前の完全な文字列をリンクに追加する必要があります。コロンの前のテキストをリンクするためのPHPの正規表現

username: @twitter nice site! RT www.google.com : visited! 

に変換する必要があります。例えば

:私はすでにクリッカブルURLへ@twitter文字列を変換し、次の正規表現を持っている

<a href="http://twitter.com/username">username</a>: nice site! RT www.google.com : visited! 

$description = preg_replace("/@(\w+)/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>", $description); 

任意のアイデア:)

+0

名前は常に文字列の先頭にありますか? –

+0

はい、いつも始まりです。 – CLiown

+0

'username:'と '@ twitter'は2つの異なるリンクにする必要がありますか?あなたの例では、変換後に '@ twitter'が消えるためです。 – Karolis

答えて

0

私は、コードをテストしていませんが、それがあるとして動作するはずです。基本的に@twitterの後ろにキャプチャする必要があります。

$description = preg_replace("%([^:]+): @twitter (.+)%i", 
    "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>: \\2", 
    $description); 
1
$regEx = "/^([^:\s]*)(.*?:)/"; 
$replacement = "<a href=\"http://www.twitter.com/\1\" target=\"_blank\">\1</a>\2"; 
3

私はstrstrsubstrstrlenを使用して、むしろ正規表現よりも、このために文字列操作を使用したい:

$username = strstr($description, ':', true); 
$description = '<a href="http://twitter.com/' . $username . '">' . $username . '</a>' 
      . substr($description, strlen($username)); 
0

次は動作するはずです -

$description = preg_replace("/^(.+?):\[email protected]\s(.+?)$/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>: \\2", $description); 
0

ダイレクトあなたの質問に答えて:

$string = preg_replace('/^(.*?):/', '<a href="http://twitter.com/$1">$1</a>:', $string); 

しかし、あなたはTwitterのRSSなどを解析していると仮定します。したがって、/^(\w+)/を使用することができます。

関連する問題