我在 PHP 编程中遇到了一个奇怪的问题。在使用该backtrace
函数获取 PHP 编译器正在使用的最后一个文件时。它会给我使用反斜杠的路径。我想将此字符串存储在数据库中,但 MySQL 会删除它们;我假设它在想我想逃离他们。
所以C:\Path\To\Filename.php
最终会C:PathToFileName.php
在数据库中。当我将这个问题发布到谷歌时,我发现许多其他人有同样的问题,但在许多不同的情况下。人们总是提出类似的建议:
$str = '\dada\dadda';
var_dump(str_replace('\', '\\', $str));
这样做的问题是,即使您将其放入某种循环中,您也只是不断将第一个替换\
为\\
. 所以它开始像\
then \\\
then \\\\\
then etc... 直到它\\\\\\\
用\\\\\\\\\
这个巨大的字符串填充内存缓冲区。
如果其他人有,我对这个问题的解决方案是:
//$file = C:\Path\To\Filename.php
//Need to use \\ so it ends up being \
$fileArray = explode("\\", $file);
//take the first one off the array
$file = array_shift($fileArray);
//go thru the rest of the array and add \\\\ then the next folder
foreach($fileArray as $folder){
$file .= "\\\\" . $folder;
}
echo $file
//This will give you C:\\Path\\To\\Filename.php
因此,当它存储在数据库中时,它会显示为C:\Path\To\Filename.php
.
如果其他人对此有更好的解决方案,我会全力以赴。