2013-08-02 43 views
0

我有一個字符串,它看起來像這樣使用的preg_replace

<a href="/team.php?team_id=521">@Arsenal Fc</a> and <a href="/profile.php?fid=50683">@Tester Alpha</a> 

,我需要將其轉換爲

「#ArsenalFc和測試阿爾法」

三件事需要轉換爲字符串心裏。

1),用於鏈接到team.php頁面,該@轉換爲#

2),用於鏈接到team.php頁,串空格被刪除(阿森納Fc與ArsenalFc)

3)鏈接到profile.php頁面,@被刪除

任何想法表明這樣做只是簡單的?

+0

您可以先剝離標籤,然後使用str_replace – 2013-08-02 14:11:31

+0

'str_replace('FC Arsenal','FC Hansa Rostock',$ string);';) – hek2mgl

+0

老實說,我會把字符串解析成一個DOM對象並處理它。您可能需要將它包裝在一個虛擬''節點中以便解析它,但對我來說,它比嘗試使用正則表達式更容易。 –

回答

1

這對我的作品

function myPregCallback($res) 
{ 
    return '#'.str_replace(' ','',$res[1]); 
} 
$str = '<a href="/team.php?team_id=521">@Arsenal Fc</a> and <a href="/profile.php?fid=50683">@Tester Alpha</a>'; 
$newStr = preg_replace_callback('#^.+"/team\.php[^>]+>@?([^<]+)</a>#','myPregCallback',$str); 
$newStr = preg_replace('#<a.+?"/profile\.php.+?>@?([^<]+)</a>#','$1',$newStr); 
var_dump($newStr); //string(27) "#ArsenalFc and Tester Alpha" 

當然,這可能是簡單如果「team.php」和「profile.php」明確檢查是沒有必要的。

+0

我在第二行收到意外的T_FUNCTION錯誤,有什麼想法? – Mortage

+0

@Mortage是的,很抱歉 - 您的PHP版本顯然太低以至於無法支持匿名功能(已添加5.3) - 請參閱已更新的答案 – SmokeyPHP

+0

太棒了!精美的作品 – Mortage