2011-12-20 55 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匹配(我使用/)
相关问题