2014-02-05 69 views
-1

我有一些字符串,其標籤看起來像@user_name。從字符串獲取標籤,替換它中的一些符號並將其轉換爲鏈接PHP

$text = preg_replace ("/@(\\w+)/", '<a href="http://$1.'.SITE_NAME.'">@$1</a> ', $text); 

正如你所看到的,所有的井號標籤變成子域名: 現在我這樣,將所有標記即可鏈接。如果您知道,在子域名中有_符號存在一些問題(某些瀏覽器不支持,IE支持,但不設置cookie等)。所以我需要將子域中的_符號替換爲-(減號),但在hashtag視圖中保留_符號。有鏈接我需要<a href="http://user-name.site.com">@user_name</a>。怎麼樣?

+0

哈希標籤''#。當然你的意思是''at''(@ @) – Albzi

+0

@BeatAlex我認爲在這種情況下並不重要 –

+0

不,不管它是'#'還是'@'都可以,但是你因爲在你的代碼中沒有任何內容,所以要求一個散列標籤,這是我感到困惑的地方。 – Albzi

回答

1

您可以使用preg_replace_callback()這樣的:

$text = preg_replace_callback ("/@(\\w+)/", function ($matches) { 
    return '<a href="http://'. str_replace('_', '-', $matches[1]) .'.abc.com.">'.$matches[1].'</a> '; }, "test @user_john here"); 
+0

謝謝!現在我知道新的PHP功能。 –

0

嗯,看起來你已經有答案了......

我會建議此正則表達式的使用方法:

(https?:..[^\.]*)(_)([^\.]*)

DEMO

相關問題