2013-11-25 91 views
0

我試圖用一個字符串替換字符不是[A-Z]@之前。因此,這preg_replace只有在定義字符之前的子字符串

[email protected] 

需求,成爲:

A***********[email protected] 

我試着用:

$string = '[email protected]'; 
$pattern = '/(?<[email protected])[^[email protected]\.]/'; 
$replacement = '*'; 

$replace = preg_replace($pattern, $replacement, $tring); 

但結果是

'A***********[email protected]*****.***' 

所以我不能找到路如何避免更換@domain.tld通過只使用preg_replace()

domain.tld可以是任何東西,所以我不能在$pattern變種中使用(?<[email protected])

回答

2

您可以直接斷言,從當前位置,比賽[^A-Z],然後確保你可以消耗任何數量的字符,但仍打@

$pattern = '/[^A-Z](?=[^@]*@)/'; 

Produces

A***********[email protected] 
相關問題