检查当前用户是否以特定字母开头

时间:2015-10-18 08:33:48

标签: php wordpress wp-query

我创建了一个if语句,用于检查用户是否以a,b或c开头显示名称字母。问题是,它不仅显示那些用户,还显示所有用户。我的if语句出了什么问题?我能做些不同的事吗?

<?php

    $args = array(
                'exclude' => array( 1 ),
                'order'      => 'ASC',
                );

                $user_query = new WP_User_Query( array( $args ) ); ?>

                <?php if ( ! empty( $user_query->results ) ) {
                            foreach ( $user_query->results as $user ) { ?>

                <?php
                    $args = array(
                                'size' => 300,
                                );
                    $img_url = get_avatar_url($user->user_email, $args)
                ?>  


                <?php
                    $user_display_name = $user->display_name;
                    if ( strtolower($user_display_name[0]) == "a" || "b" || "c"  ) {
                ?>

                <a href="<?php echo 'http://' . $user->user_login . '.domain.com' . '"'; ?>">
                    <div class="user" style="background-image:url(<?php echo $img_url; ?>);">
                        <div class="user-avatar">
                            <img alt="<?php echo $user->display_name; ?>" class="avatar avatar-90 photo avatar-custom" height="90" src="<?php echo $img_url; ?>">
                        </div>
                        <div class="user-info">
                            <h3 class="user-title"><?php echo $user->display_name; ?></h3>
                            <p class="user-url">
                                <a href="<?php echo 'http://' . $user->user_login . '.domain.com' . '">'; ?> <?php echo $user->user_login . '.domain.com'; ?></a>
                            </p>
                        </div>
                    </div>
                </a>

                <?php } ?>

                <?php } ?>
                <?php } else {
                        echo 'No users found.';
                }
                ?>

3 个答案:

答案 0 :(得分:1)

你有点弄乱if条件。

<?php
     $user_display_name = $user->display_name;
     $initial = strtolower($user_display_name[0]);
     if ( $initial == "a" || $initial == "b" || $initial == "c"  ) {
     .... 
?>

答案 1 :(得分:1)

请学习php语法。这些条件总是评估为真:

if ( strtolower($user_display_name[0]) == "a" || "b" || "c"  ) {

至少你需要的是:

if ( strtolower($user_display_name[0]) == "a" 
    || strtolower($user_display_name[0]) == "b" 
    || strtolower($user_display_name[0]) == "c"  ) {

答案 2 :(得分:1)

正如Mubin所说,你的if语法错了。您还可以使用正则表达式来检查用户名是否以|| b || c

开头

以下是如何做到的:

if(preg_match('/^(a|A|b|B|c|C)/',$user->display_name))
如果找到指定模式的匹配项,

preg_match将返回true。给定的正则表达式将匹配以a,b或c开头的任何字符串。