使用str_replace

时间:2017-12-23 03:47:18

标签: php

我是PHP新手,我试图删除带图像的帖子,在删除存储驱动器中的图像之前,我必须将图像路径从http://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg更改为/ Applications / XAMPP / xamppfiles /的htdocs /微博/后/ 52 / POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg"

这就是为什么我使用str_repalace更改imagePath,但我收到了错误

  

注意:未定义的变量:路径   第123行/Applications/XAMPP/xamppfiles/htdocs/twitter/post.php

     

警告:unlink():

中没有此类文件或目录      第126行的

/Applications/XAMPP/xamppfiles/htdocs/twitter/post.php

     

{"消息":"已成功删除","结果":1,"状态":"图像一直都是   无法从驱动器中删除"}

我在此行中获得了未定义的路径变量

$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);

这里出了什么问题?

if (!empty($_REQUEST["uuid"]) && empty($_REQUEST["id"])) {


    $uuid = htmlentities(strtolower(stripcslashes($_REQUEST["uuid"])));
    $imagePath = htmlentities(($_REQUEST["imagePath"]));


    $result = $access -> deletePost($uuid);

    if (!empty($result)) {

        $returnArray = [
        "message" => "successfully deleted",
        "result" => $result
    ];



    if (!empty($imagePath)) {


        $path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);


        if (unlink($path)) {
            $returnArray["status"] = "Image has been deleted from drive";
        } else {
            $returnArray["status"] = "Image has been failed to be deleted from drive";
        }



    }


    } else {

        $returnArray = [
        "message" => "Couldn't delete the post"
    ];

    }





} 

1 个答案:

答案 0 :(得分:3)

以下一行:

$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);

应该(为$path切换$imagePath

$path = str_replace(
    "http://localhost/", 
    "/Applications/XAMPP/xamppfiles/htdocs/", 
    $imagePath
);

使用http://localhost/并替换为/Applications/XAMPP/xamppfiles/htdocs/会使其100%无法移植,一旦您将代码移到其他位置,它就会中断。

相反,您应该使用parse_url来抓取路径,而/Applications/XAMPP/xamppfiles/htdocs/看起来就像是您的webroot的路径,忘了使用它。

<?php
$url = 'http://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg';

$path = parse_url($url, PHP_URL_PATH);

echo $path; //Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg

然后只需使用unlink($path);它就可以正常工作,它可以使您的代码可移植。