所以,我想這正則表達式:正則表達式找到比等號小於和大於之間文本
$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];