修剪功能不起作用

时间:2015-06-16 02:26:30

标签: php mysql utf-8 character-encoding trim

嗨(对不起我的英文xD),

我在MySql中获取我的数据库中的数据,这些数据(格式为“玩家1 - 玩家2'”的玩家对)。我使用explode功能按字符-剪切,因此我得到了播放器1'和'玩家2'串。我尝试在开始和结束时使用修剪功能删除空格,但这不起作用。我怀疑这个问题与-字符的其他问题类似,键盘的正常-不会使用explode函数拆分字符串,我必须转到PHPMyAdmin并复制{ {1}}一个现有字符串的字符,并将其粘贴到第二个爆炸函数参数中,此后,爆炸函数将起作用。

我尝试使用-字符相同(在PHPMyAdmin中登录复制一个空格并将其粘贴为-函数的第二个参数,但这次不能工作:()。

还尝试使用trim功能(无论差距被消除)并且不起作用,也尝试使用str_replace功能等......没有任何工作因为显然是白色空间保存在数据库中与我的键盘不一样,我怀疑问题与字符集或校对有关,但我不知道应该怎么做,因为表,链接,字符集PHP和其他东西是UTF-8和utf8-spanish-ci整理和字符集。

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

preg_replace

Screenshot from command line

2 个答案:

答案 0 :(得分:1)

我发现问题归功于@Rick James,看着数据库的十六进制响应我注意到两个空格是x20,但是一个是xC2 xA0。在stackoverflow的其他帖子中读取,我发现xC2 xA0是一个非中断空间,但是修剪函数无法识别。解决方案将此指定为函数的第二个参数:

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

现在正确删除了空格:3

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

答案 1 :(得分:0)

由于特殊字符两侧有3个空格,因此将字符串拆分为3个空格。

像这样:

<?php

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