我需要从“php://input”中提取电子邮件地址并将其呈现在 xml 输出中 - 作为 Outlook“autodiscover.xml”流程的一部分。按预期工作,但我只需要传递电子邮件地址作为登录名。
这是我正在使用的 autodiscover.php,它可以提取地址,但我只获得用户名部分,而不是整个 UPN/地址。
<?php
//get raw POST data so we can extract the email address
$raw = file_get_contents("php://input");
$matches = array();
preg_match('/<EMailAddress>([^@]+)@([^\.]+).*<\/EMailAddress>/', $raw, $matches);
在 xml 渲染代码中,这些是我尝试用整个电子邮件地址填充的字段,例如 [email protected]
此代码仅将“user123”呈现为 LoginName
<LoginName><?php echo $matches[1]; ?></LoginName>
<Domain><?php echo $matches[2]; ?></Domain>
我尝试过 $matches[0];它内联添加了 EMailAddress,如下所示:
<LoginName>
<EMailAddress>[email protected]</EMailAddress>
</LoginName>
有没有一种简单的方法来传递“LoginName”节的整个地址?
我用上面的代码输出了什么:
<LoginName>user123</LoginName>
我想通过什么:
<LoginName>[email protected]</LoginName>
我认为你的正则表达式可能有问题?试试这个:
preg_match('/<EMailAddress>([^<]+)<\/EMailAddress>/', $raw, $matches)