Trim 功能不起作用

Trim Function doesn't Work

嗨(抱歉我的英语不好 xD),

我正在 MySql 中获取我的数据库的数据,此数据(格式为 'Player 1 - Player 2' 的一对玩家)。我用 explode 函数按字符 - 切割它,因此我得到 'Player 1 ' 和“Player 2”字符串。我尝试使用 trim 函数删除开头和结尾的白色 spaces,但这不起作用。我怀疑这个问题与其他 - 字符的问题类似,我的键盘的正常 - 不使用爆炸功能拆分字符串,我不得不去 PHPMyAdmin 和复制现有字符串的 - 字符并将其粘贴到第二个 explode 函数参数中,在此之后,explode 函数工作。

我尝试使用相同的 - 字符(登录 PHPMyAdmin 复制一个白色 space 并将其粘贴为 trim 函数的第二个参数,但是这次不工作:( ).

也尝试使用 str_replace 函数(无论消除什么间隙)但不起作用,也尝试使用 preg_replace 函数等...没有任何效果,因为显然白色 space 保存在数据库中的与我的键盘不一样,我怀疑问题与字符集或排序规则有关,但我不知道我应该做什么,因为 table, link、PHP 的字符集和其他东西是 UTF-8 和 utf8-spanish-ci 排序规则和字符集。

声明:数据的输入是由 xdom (PHP) 从不受我控制的其他站点输入的。

<tbody>
<?php while ($partidos = mysqli_fetch_array($sql)) { ?>
    <tr>
        <td class="center"><?php echo $partidos['fecha']; ?></td>
        <td><?php $participante = explode("₋", $partidos['jugadores']);
            $participante1 = trim($participante[0]);
            $participante2 = trim($participante[1]);

            echo trim($participante1) . "<br>vs<br>" . trim($participante2);
            ?></td>
        <td><?php if ($partidos['estado'] == 0) { ?> En Curso<?php } elseif ($partidos['estado'] == 1) {
                if ($partidos['alerta'] == 0) { ?> Terminado<?php } else { ?>Terminado - Error <i
                    class="fa fa-exclamation-triangle"></i><?php }
            } ?></td>
        <td><?php if ($partidos['alerta_medica'] == 1) { ?> Si <i class="fa fa-2 fa-medkit"
                                                                  style="color:#C00;"></i><?php } else { ?> No<?php } ?>
        </td>
        <?php if ($_SESSION['tipo'] == 1 || $_SESSION['tipo'] == 2) { ?>
            <td class="center">
            </td>
        <?php } ?>
    </tr>
<?php } ?>
</tbody>

因为特殊字符两边各有 3 个空格,所以将字符串分成 3 个空格。

像这样:

<?php

foreach( $strings as $string) {
    $players = explode("   ",$string);
    print "Player 1: " . $players[0]  . PHP_EOL;
    print "Player 2: " . $players[2]  . PHP_EOL;
}

感谢@Rick James,我发现了问题,观察数据库的十六进制响应我注意到两个 space 是 x20,但一个是 xC2 xA0。阅读其他 post 的 Whosebug,我发现 xC2 xA0 是一个 Non-break space,但是 trim 函数无法识别。解决方案是将其指定为函数的第二个参数:

$participante1 = trim($participante[0],"\x20,\xC2,\xA0");
$participante2 = trim($participante[1],"\x20,\xC2,\xA0");

现在白色space被正确移除了:3

感谢大家帮助解决这个问题:)