如何使用PHP提取子字符串

如何使用PHP提取子字符串,php,string,Php,String,PHP初学者的问题 我需要在数据库中为管理员后端保留如下图像路径 ../../../../assets/images/subfolder/myimage.jpg 然而,我需要的图像路径如下前端 assets/images/subfolder/myimage.jpg 用PHP改变这一点的最好方法是什么 我考虑过substr,但我想知道是否有更好的方法 提前感谢。您应该将映像路径保存在应用程序变量中,并且可以从管理员和前端访问。如果../../../../../../../.已修复,则subst

PHP初学者的问题

我需要在数据库中为管理员后端保留如下图像路径

../../../../assets/images/subfolder/myimage.jpg
然而,我需要的图像路径如下前端

assets/images/subfolder/myimage.jpg
用PHP改变这一点的最好方法是什么

我考虑过substr,但我想知道是否有更好的方法


提前感谢。

您应该将映像路径保存在应用程序变量中,并且可以从管理员和前端访问。

如果../../../../../../../.已修复,则substr将工作。如果没有,请尝试以下方法:

newpath=substr(strpos(path, "assets"));

一开始这似乎是一个奇怪的选择,但你可以使用它。在下面的示例中,将从$path开头删除所有../。 第二个参数中的点必须转义,否则PHP会将它们视为一个范围

$path = ltrim('../../../../assets/images/subfolder/myimage.jpg', '\\.\\./');
$path将是:

assets/images/subfolder/myimage.jpg
我建议这样做

$path = "../../../../assets/images/subfolder/myimage.jpg";
$root = "../../../../";

$root_len = strlen($root);

if(substr($path, 0, $root_len) == $root){
    echo substr($path, $root_len);
} else {
    //not comparable
}

这样,您就可以控制哪个目录作为您的图片的根?

,您可以更具体地描述目录结构吗?如何将../../../../../../../assets转换为资产?你的根目录和基目录是什么?或者你只是想替换那些精确的值?为此,有一个stru_replace:否则,我认为我们需要更多的信息。为什么后端和前端需要不同的路径?为什么不只使用一个路径并使用前缀对其进行调整呢?请注意,ltrim的第二个参数表示应该删除的字符列表。