【发布时间】:2020-12-03 23:19:37
【问题描述】:
我正在尝试对保存在我的数据库中的产品名称使用explode。我有一个产品名为:A4Tech KR-83FN Multimedia Bangla USB 黑色舒适圆边键帽普通键盘 在数据库中。当我使用选择查询获取条目并对其使用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);
我认为我遗漏了一些简单的东西,它是唯一存在此问题的产品名称。
我后面有另一部分代码,它将除了 a-zA-Z0-9 和空格 替换为“”,它不应该替换空格,但该部分实际上删除了每一位从以下数组的第四个元素开始的空间。因此,空间不被视为空间。
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)
【问题讨论】:
-
请发布您的代码的其他部分(将除 a-zA-Z0-9 和空格替换为“”)
-
@KenLee 使用这个:
$cleaned = preg_replace("([^a-zA-Z0-9])","",$str); -
@syd 你没有在那个正则表达式中添加空格...
-
@Steven 抱歉。实际上有两条线。一个替换空间,一个不替换。我错误地发布了错误的行。这确实是一个标签,导致了问题。