2014-04-28 46 views
0

我有一個網絡應用程序正在創建並鏈接到#hashtags,我注意到如果有人創建#hashtag#JB22下面的代碼中斷。Hashtag preg_replace

有沒有去的正則表達式,我可以在一個#hashtag

$users = preg_replace("~(<var data-type=\"user\" class=\"userHighlight\" id=\"(.*?)\">)(.*?)(</var>)~", "<_link>$2|$3</_link> ", $start); 
$tags = preg_replace("~(<var data-type=\"tag\" class=\"tagHighlight\" id=\"(.*?)\">)#(.*?)(</var>)~", "<_link>tag://$3|#$3</_link> ", $users); 
$last = preg_replace("~(^|\\s)#(\\w*[a-zA-Z_]+\\w*)~", " <_link>tag://$2|#$2</_link> ", $tags); 

回答

2

末允許數字與[a-zA-Z_0-9]+替換此[a-zA-Z_]+或者如果你只在模式的結尾要的號碼,你可以使用([a-zA-Z_]+?[a-zA-Z_0-9]+?)

+0

感謝隊友,它工作 –

3

你應該能夠在0-9塊添加到你的正則表達式來搜索數字,以及:

$last = preg_replace("~(^|\\s)#(\\w*[a-zA-Z0-9_]+\\w*)~", " <_link>tag://$2|#$2</_link> ", $tags); 

注意:您要使用某種DOM文檔解析器到HTML/XML標記。

+0

塞繆爾通常我會推薦DOM Document,但是如果處理過程簡單且足夠可預測,那麼它就沒有任何意義 - DOM文檔是緩慢的野獸。 –

+0

我同意這一點 –