1

我有超过 100 万条文件路径记录保存到 mysql 数据库的列中。我正在尝试制作一个应用程序来拉下可能具有不同路径的类似文件并使用 PHP 排列它们。我已经设置了所有数据库,现在我试图让我的 PHP 工作,但遇到以下警告,并且它甚至没有正确创建数组,如果你查看以下输出并将其与文件目录,甚至出现奇怪的段落符号以及文件名变得混乱。

array(4) { 
    [0]=> string(42) "2013-01-17-141325589_2013-01-18-j-CP08.45" 
    [1]=> string(3) "ar¶" 
    [2]=> string(10) "loc¶66hygh" 
    [3]=> string(23) "dfgh  est_file1.jpg.meta" 
}

这是我的代码:

$filepath = "2013-01-17-141325589_2013-01-18-j-CP08\45645\5\ar\666\loc\66666hygh\dfgh\test_file1.jpg.meta";

$pieces = explode("\\", $filepath);

var_dump($pieces);
?>
4

4 回答 4

1

通过使用双引号 PHP 进入模板模式。例如\456将被视为八进制值。

只需使用单引号'即可解决您的问题。

于 2013-07-10T13:48:52.340 回答
0

\xxx其中xxx0-7 范围内的数字被解释为八进制数。因此,例如\666,您的代码中的 被视为八进制 666,并被视为十六进制 0x1B6/十进制 438,即字符。

于 2013-07-10T13:48:50.033 回答
0

只需将双引号更改为单引号,字符串就不会被解析。

于 2013-07-10T13:52:47.590 回答
0

数组生成的问题是您必须转义$filepath. 以下代码按预期工作:

<?php
$filepath = "2013-01-17-141325589_2013-01-18-j-CP08\\45645\\5\\ar\\666\\loc\\66666hygh\\dfgh\\test_file1.jpg.meta";
$pieces = explode("\\", $filepath);
var_dump($pieces);
?>

当反斜杠没有转义时,它们本身就充当转义字符,这会导致您的路径出现意外行为。

但是,您可能会发现该pathinfo()功能与您正在做的事情更相关。

于 2013-07-10T13:47:16.873 回答