所以,我想这正则表达式:正则表达式找到比等号小于和大于之间文本
$email = '';
preg_match('<.*?>', 'sadfas<[email protected]>', $email);
echo $email[0];
目标结果是如此提取“[email protected]”,因为它是<之间> sign ...但它不起作用...
我做错了什么?
所以,我想这正则表达式:正则表达式找到比等号小于和大于之间文本
$email = '';
preg_match('<.*?>', 'sadfas<[email protected]>', $email);
echo $email[0];
目标结果是如此提取“[email protected]”,因为它是<之间> sign ...但它不起作用...
我做错了什么?
你忘了正则表达式分隔符(/
是一个流行的分隔符)。你也应该使用一个子模式只匹配地址,而不是<>
:
preg_match('/<(.*?)>/', 'sadfas<[email protected]>', $email);
echo $email[1];
或者,你可以做一个前瞻,看看后面,以避免使用子模式:
preg_match('/(?<=<).*?(?=>)/', 'sadfas<[email protected]>', $email);
echo $email[0];
您需要:
代码:
<?php
$email = '';
preg_match('/<(.*?)>/', 'sadfas <[email protected]>', $email);
print_r($email);
?>
测试:
% php foo.php
Array
(
[0] => <[email protected]>
[1] => [email protected]
)
注意你想要的实际领域是如何在$email[1]
试试这个代码,而不是:
preg_match('/<(.*)?>/', 'sadfas<[email protected]>', $email);
echo $email[1];