Php 从数据库中提取字符串时,Explode无法正常工作

Php 从数据库中提取字符串时,Explode无法正常工作,php,arrays,explode,Php,Arrays,Explode,我正在尝试对保存在数据库中的产品名称使用explode。我在数据库中有一款名为:A4Tech KR-83FN Multimedia Bangla USB黑色舒适圆边键帽普通键盘。当我使用select query获取条目并对其使用explode时,它工作不正常,并且获取以下数组: array (size=4) 0 => string 'A4Tech' (length=6) 1 => string 'KR-83FN' (length=7) 2 => string 'Mu

我正在尝试对保存在数据库中的产品名称使用explode。我在数据库中有一款名为:A4Tech KR-83FN Multimedia Bangla USB黑色舒适圆边键帽普通键盘。当我使用select query获取条目并对其使用explode时,它工作不正常,并且获取以下数组:

array (size=4)
  0 => string 'A4Tech' (length=6)
  1 => string 'KR-83FN' (length=7)
  2 => string 'Multimedia' (length=10)
  3 => string 'Bangla USB Black Comfort Round Edged Keycaps Normal Keyboard' (length=68)
但是,当我复制文本并对其使用explode()时,它工作正常

array (size=12)
  0 => string 'A4Tech' (length=6)
  1 => string 'KR-83FN' (length=7)
  2 => string 'Multimedia' (length=10)
  3 => string 'Bangla' (length=6)
  4 => string 'USB' (length=3)
  5 => string 'Black' (length=5)
  6 => string 'Comfort' (length=7)
  7 => string 'Round' (length=5)
  8 => string 'Edged' (length=5)
  9 => string 'Keycaps' (length=7)
  10 => string 'Normal' (length=6)
  11 => string 'Keyboard' (length=8)
代码如下所述:

<?php
$conn = new mysqli("localhost", "root", "", "dbname");;
$sql = "select * from products where name like '%A4Tech KR-83FN Multimedia%'";
$result = $conn->query($sql);
$row = $result->fetch_row();
$ss = $row[5];
//$ss = "A4Tech KR-83FN Multimedia Bangla USB Black Comfort Round Edged Keycaps Normal Keyboard";
$exploded = explode(" ",$ss);
var_dump($exploded);

如果该代码适用于数据库中除此之外的所有产品,那么很有理由认为错误与此文本的格式有关

通常我打赌字符串在停止工作点后包含制表符而不是空格:

A4Tech KR-83FN Multimedia Bangla USB Black Comfort Round Edged Keycaps Normal Keyboard
      ^       ^          ^      ^   ^     ^       ^     ^     ^       ^      ^
    {        Spaces         } {        Tabs                                     }
但是,在您的情况下,字符串应该是
60字节
,实际上是
68字节
(根据您的问题),因此我打赌您的换行符/回车符应该是
\r\n
,而不是制表符(单个制表符只能返回
64字节

鉴于这只是一种产品,我强烈建议只需手动更改条目

您的更新—替换
[^a-zA-Z0-9]
的附加代码—似乎证实了这一理论


当然,它可以是
\t\t
\n\t
\n\n
或任何其他空格字符的组合。

请发布代码的其他部分(将除a-zA-Z0-9和空格外的所有内容替换为“”)@KenLee使用以下命令:
$cleaned=preg\u replace(([^a-zA-Z0-9])、“,$str)@syd你没有在正则表达式中加空格…@Steven抱歉。实际上有两行。一个代替空间,一个不代替。我发错了线。这确实是一个标签,导致了这个问题。谢谢。需要添加一个额外的行,通过
trim(preg_replace('/\s+/','','$ss)),用空格替换所有制表符
A4Tech KR-83FN Multimedia Bangla USB Black Comfort Round Edged Keycaps Normal Keyboard
      ^       ^          ^      ^   ^     ^       ^     ^     ^       ^      ^
    {        Spaces         } {        Tabs                                     }