奇怪的行为

问题描述:

我需要删除网址的开头部分:奇怪的行为

$test = "price/edit.php"; 
echo ltrim($test,'price/'); 

显示dit.php

这里有一个键盘,如果你想捣鼓:https://codepad.remoteinterview.io/DominantCalmingBerlinPrice

任何想法正在发生什么?当然,我希望它回应edit.php

+0

尝试我的解决方案 – user1234

ltrim删除找到的所有文字,考虑以下因素:

$test = 'price/edit.php'; 
echo ltrim($test, 'dprice/'); // outputs t.php 

对于这种特殊的情况下,你或许应该使用str_replace

+0

不幸的是,str_replace不会像我打算的那样工作....如果我有以下$ test =“test/price/edit.php”,会发生什么情况。它会从中间去掉价格,我只想把它从字符串中删除。 – hendr1x

ltrim()的第二个参数是应该删除的字符掩码(字符列表)。 e是应该删除的字符,因此它从edit中删除。

有,你可以使用很多字符串操作,但是因为这是一个文件名/文件路径正确的工具是一个文件系统功能,basename()

echo basename($test); 

有关文件路径支票存入pathinfo()更多信息。

+0

谢谢你的解释。我没有得到它是一个人物面具。 – hendr1x

+0

不幸的是basename不起作用。我想支持任何URL长度(例如price/sample/edit.php会产生sample/edit.php),如果遇到test/price/edit.php,它将不会执行任何操作。 – hendr1x

您好我有前一段时间所面临的同样的问题,发现这个解决方案中使用它,如果它适合你的需要

<?php 

    $test = "price/edit.php"; 
    echo ltrim(ltrim($test,'price'),'/'); 

output 

edit.php 

,但我必须说,你应该使用basename所有类型的问题

<?php 

    $test = "project/price/edit.php"; 
    // echo ltrim(ltrim($test,'price'),'/');// this will give oject/price/edit.phpedit.php 

    echo basename($test); // and it will generate edit.php 
+0

不幸的是,我想支持任何网址(例如price/sample/edit.php产生sample/edit.php) – hendr1x

+0

@ hendr1x是啊那就是为什么我建议你第二个选项的例子:) – user1234

+0

对不起,我不清楚。我希望系统在这种情况下返回price/edit.php,而不仅仅是edit.php – hendr1x