删除 php mysql 结果反斜杠

标签 php mysql regex

我有一个表格,其中包含文件名和一些其他信息。当我运行以下查询时:

select * from `documentinfo` WHERE `num`='40217'

我得到的结果是正确的:

Array
(
    [num] => 40217
    [datetime] => 2011-09-15 15:22:07
    [date] => 2011-09-15
    [filename] => C:\redoak\DocumentsIN\Filer\8883894460_3044564210_07334802020001.mp3
)

当我运行查询时:

QUERY:`filename` REGEXP '^C:\\redoak\\DocumentsIN\\Filer'

我得到:

Array
(
    [num] => 35910
    [datetime] => 2010-12-03 17:34:38
    [date] => 2010-12-03
    [filename] => c:
edoakDocumentsINFiler8883894460_3043926485_05863748580001.mp3
)

请注意,结果已从文件夹名称中删除了\。

我使用了以下 php 来显示这个:

while ($row = array_change_key_case(mysql_fetch_assoc($webquery), CASE_LOWER)) 
{
    print_r($row);  
}

查询任何数字都可以正常工作。如果模式不包含反斜杠,则正则表达式查询有效。如果它包含反斜杠,它可以工作,但从表返回的数据缺少反斜杠。即使查询找到了正确的记录。感谢橡树

问题是:character_set_results 默认情况下,正则表达式查询会返回与 = 查询不同的字符集结果吗?


我尝试了以下更改字符集以查看发生了什么:

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'") or die("ERROR SETTING CHAR SET");      
echo '<pre>debug: encoding=', mysql_client_encoding(), '</pre>';

$webquery=mysql_query($query);

echo '<pre>debug: encoding=', mysql_client_encoding(), '</pre>';

它总是表示latin1

我用了mysql_set_charset('utf8');,改成了utf8,结果没变。

最佳答案

MySQL 将反斜杠字符解释为转义字符。对于查询中的反斜杠,使用双反斜杠 \\

关于删除 php mysql 结果反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437597/

相关文章:

mysql - MySQL 备份扩展名 .mysql 和 .sql 之间的区别

php - $wpdb - 它在失败时返回什么?

regex - 按分隔符拆分字符串并在新行上打印元素

php - 将多个正则表达式合并为一个

php - mysql连接成功但没有选择数据库?

php - 如何在 php 中为 www-data 用户提供所需的权限

mysql - 选择时间戳最接近的行

javascript - 如何为 Imagus 悬停缩放扩展开发自定义过滤器?

php - MySQL 连接 2 个不匹配的查询

PHP 将数字截断为最多 15 位,以实现与 MS Excel 中相似的精度