Php 从数据库中提取字符串时,Explode无法正常工作
我正在尝试对保存在数据库中的产品名称使用explode。我在数据库中有一款名为:A4Tech KR-83FN Multimedia Bangla USB黑色舒适圆边键帽普通键盘。当我使用select query获取条目并对其使用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
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 }