2013-07-26 241 views
2

我有一定的困難,這個以前也遇到過底線,所以我希望你女孩和球員,可以幫幫忙,我有幾串這樣匹配字符串匹配,如果

foo_bar.com     // no match 
[email protected] // match 
[email protected]_otherstuff // match 

我使用這個,但它並不完全工作,我怎麼想它

[^_]+([email protected]).*

如果下劃線遇到之前在我想刪除@一切之後,如果沒有遇到下劃線,見好就收字符串獨自

回答

0

這需要兩個步驟,首先匹配然後擦除。

if (preg_match("/_.*@/", $string)) 
    $string = preg_replace("/@.*$/", "", $string); 
0

作爲替代正則表達式,你可以使用基本的字符串函數:

$underscore = strpos($string, '_'); 
$at = strpos($string, '@'); 

if ($underscore !== false && $underscore < $at) { 
    $string = substr($string, 0, $at); 
} 
1

你不需要如下的代碼:

$result = preg_replace('/^([^[email protected]]*_[^@]*)@.+/', '$1', $subject); 
+0

已經接受了一個工作解決方案,但再加上一個沒有環顧四周,謝謝艾倫,我不認爲你可以這樣做。 – ehime