0

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。まったく同じ文字列であると確信しています!

4

3 に答える 3

3

デフォルトでは、ショートコードはタグuserinfoでラップされたデータを返します。スパンタグ<span>を抑制するには、-属性を使用できます。nospan

プラグインの説明には次のように書かれています。

[userinfo nospan = "true"]は、出力を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);
于 2013-03-08T05:52:41.010 に答える
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を現在のユーザーの電子メール アドレスに文字列として設定します。

于 2013-03-08T06:00:33.090 に答える
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して、そこに予期しない値があるかどうかを確認することもできます。

于 2013-03-08T05:35:02.827 に答える