2011-12-20 59 views

回答

4

你忘了正則表達式分隔符(/是一個流行的分隔符)。你也應該使用一個子模式只匹配地址,而不是<>

preg_match('/<(.*?)>/', 'sadfas<[email protected]>', $email); 
echo $email[1]; 

或者,你可以做一個前瞻,看看後面,以避免使用子模式:

preg_match('/(?<=<).*?(?=>)/', 'sadfas<[email protected]>', $email); 
echo $email[0]; 
3

您需要:

  1. 分隔正則表達式
  2. 創建位捕獲組你想

代碼:

<?php 
$email = ''; 
preg_match('/<(.*?)>/', 'sadfas <[email protected]>', $email); 
print_r($email); 
?> 

測試:

% php foo.php 
Array 
(
    [0] => <[email protected]> 
    [1] => [email protected] 
) 

注意你想要的實際領域是如何在$email[1]

1

試試這個代碼,而不是:

preg_match('/<(.*)?>/', 'sadfas<[email protected]>', $email); 
echo $email[1]; 
  1. 您需要將結果放在括號中以返回匹配。
  2. 將模式分隔符添加到PHP匹配(我使用/)
相關問題