所以我尝试了这个正则表达式:
$email = '';
preg_match('<.*?>', 'sadfas<email@email.com>', $email);
echo $email[0];
目标结果是提取'email@email.com',因为它位于&lt;之间。和&gt;签署......但它没有用......
我做错了什么?
答案 0 :(得分:4)
您忘记了正则表达式分隔符(/
是一个流行的分隔符)。您还应该使用子模式仅匹配地址而不是<>
:
preg_match('/<(.*?)>/', 'sadfas<email@email.com>', $email);
echo $email[1];
或者,您可以进行预测并向后看以避免使用子模式:
preg_match('/(?<=<).*?(?=>)/', 'sadfas<email@email.com>', $email);
echo $email[0];
答案 1 :(得分:3)
你需要:
代码:
<?php
$email = '';
preg_match('/<(.*?)>/', 'sadfas <email@email.com>', $email);
print_r($email);
?>
试验:
% php foo.php
Array
(
[0] => <email@email.com>
[1] => email@email.com
)
注意您想要的实际字段是$email[1]
答案 2 :(得分:1)
请尝试使用此代码:
preg_match('/<(.*)?>/', 'sadfas<email@email.com>', $email);
echo $email[1];