0

我不知道我的问题到底出在哪里,希望你能帮助我。2 小时的谷歌搜索没有帮助。:/

我使用简单的SELECT string FROM table. 这是我回应它时得到的:

echo $string;                   -> some-string
echo htmlspecialchars($string); -> some-string

我认为这已经很奇怪了,因为如果我将查询更改为

SELECT string FROM table WHERE string LIKE '%some-string%';

使用我键盘上的减号,结果为空。我尝试了不同的字符集(“SET NAMES ...”),但这里没有任何区别。所以我坚持使用“SET NAMES utf8”,我的 PHP 文档也是 UTF-8 编码的。有谁知道我的问题是什么?

接下来发生的事情就更奇怪了:

echo preg_replace("/[^0-9a-zA-Z]/", "+", $string);

这应该用加号替换每个非字母数字字符,对吗?所以我的期望是some+string,但它呼应:

some++45+string

我在这里想念什么?非常感谢任何帮助。

4

1 回答 1

0

数据以some-string. 在浏览器中显示时,它呈现为some-string. 使用htmlspecialcharssome-string如你所说。尝试查看源代码,您应该分别看到以下内容:

some-string
some-string

您可以更改您的 MySQL 搜索以查找%some-string%,它应该可以工作,但不建议将 HTML 编码的数据存储在您的数据库中。您应该存储原始数据并根据需要对其进行编码以供显示。接收到的原始数据可能带有文字-,但我怀疑是这种情况。您可能需要花时间解码所有存储的数据。

于 2013-12-09T17:00:10.163 回答