我正在尝试将PHP变量中保存的电子邮件地址与Wordpress中的短代码中保存的电子邮件地址进行比较,这是我到目前为止所尝试的:
$email = 'someone@something.com';
$user_email = do_shortcode('[userinfo field="user_email"]');
echo var_dump(strcmp($user_email, $email) === 0);
但是var_dump
总是返回false
,我肯定他们是完全相同的字符串!
答案 0 :(得分:2)
默认情况下,userinfo
短代码会返回<span>
标记中包含的数据。要取消范围标记,您可以使用nospan
- 属性。
description of the plugin说明如下:
[userinfo nospan =“true”]应该消除周围的span标记,以便输出可以在URL或类似的应用程序中使用
所以你的代码应该是这样的:
$email = 'someone@something.com';
$user_email = do_shortcode('[userinfo field="user_email" nospan="true"]');
$var = (string) $user_email; // Casts to string
$var2 = (string) $email; // Casts to string
echo var_dump(strcmp($var, $var2) === 0);
答案 1 :(得分:1)
您不应该使用短代码,而只使用Wordpress API函数来获取当前用户的电子邮件地址:
$email = 'someone@something.com';
global $user_email;
get_currentuserinfo();
echo var_dump(strcmp($user_email, $email) === 0);
Worpdress API函数get_currentuserinfo()
将全局变量$user_email
设置为当前用户的电子邮件地址作为字符串。
答案 2 :(得分:0)
查看是否有任何空格以及是否需要修剪任何字符串,因为如果两个字符串相同,那么您的代码似乎已经有效。
$email = 'someone@something.com';
$user_email = 'someone@something.com';
$var = (string) $user_email; // Casts to string
$var2 = (string) $email; // Casts to string
echo var_dump(strcmp($var, $var2) === 0);
返回bool(true)
可能需要修剪do_shortcode('[userinfo field="user_email"]');
。此外,您可以在比较之前简单地回显$user_email
以查看是否存在任何意外值。