1

我是 php 新手。

我将默认图像路径设置为 \xampp\htdocs\Sample\tmp/one.jpg

我必须用 http:\localhost 替换 \xampp\htdocs

如果我以这种方式使用,我将获得所需的输出

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";
$imagepathurl = "\xampp\htdocs\Sample\tmp\/safety-masks_5092610ad4f3f.jpg";

echo str_replace($absolute,$relative,$imagepathurl);

但我正在从数据库中获取 $imagepathurl。如果我以相同的甲酸盐使用它,我不会得到结果

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";

$imagepathurl = '"'.$imagepath.'"';
echo str_replace($absolute,$relative,$imagepathurl);
4

3 回答 3

0

在第二个listing的时候添加"前后$imagepath为什么?

删除此行$imagepathurl = '"'.$imagepath.'"';,它应该可以工作:

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";

echo str_replace($absolute,$relative,$imagepath);

更新(例如该行的作用)

$var = "MyString";   // Content of the String => MyString
$var = '"'.$var.'"'; // Content of the String => "MyString"
于 2012-11-01T12:28:40.457 回答
0

使用该函数pathinfo获取包含路径所有组件的数组作为结果。

然后您可以替换要更改的部分并再次连接路径组件以获得所需的新路径。

其他帖子中评论的方式只是一个字符串操作解决方案。如果您在处理解析路径时想要一些安全的东西,您应该使用 php 函数pathinfo。如果是一些相当简单的,那么str_replace将做的工作。

于 2012-11-01T12:29:33.280 回答
0

如果应用任何字符编码,请确保您的数据库不对字符串应用任何字符编码,然后首先解码字符串值,然后使用此代码。

$absolute = "C:\xampp\htdocs";
$relative = "http:\\localhost";
// if database contains encoded string decode first here
//creating absolute path for image (this will remove ./, ../ \, / to create operating system preferred path as windows uses \ and linuz user / as path separator ) 
$imagepathurl = realpath($imagepathurl);
// replasing absolute path to root directory with relative path
echo str_replace( $absolute , $relative , $imagepathurl);
于 2012-11-01T13:55:38.203 回答