2016-07-21 2 views
1

мне нужно удалить, начиная часть URL:Странное поведение от LTRIM() с прямой косой черты

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

показывает dit.php

Вот codepad, если вы хотите играть на скрипке: https://codepad.remoteinterview.io/DominantCalmingBerlinPrice

Любые идеи, что происходит? Я хочу, чтобы это эхо edit.php, конечно.

+0

попробуйте мое решение – user1234

ответ

1

ltrim удаляет все символы, найденные, необходимо учитывать следующее:

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

Для этого конкретного сценария, вы, вероятно, следует использовать str_replace.

+0

К сожалению, str_replace не будет работать так, как я думал .... что произойдет, если у меня есть следующий тест: test/price/edit.php. Он удалит цену из середины, где я хочу удалить ее, начиная с нее начинается строка. – hendr1x

1

Второй аргумент ltrim() - это символьная маска (список символов), которую следует удалить. e - символ, который необходимо удалить и удалить его с edit.

Есть много струнных манипуляций, которые можно использовать, однако, так как это имя файл/путь_к_файлу правильный инструмента является Filesystem Function, basename():

echo basename($test); 

Для получения дополнительной информации о проверке Filepath в pathinfo().

+0

Благодарим вас за объяснение. Я не понял, что это была маска персонажа. – hendr1x

+0

К сожалению, basename не будет работать. Я хочу поддерживать любую длину url (например, price/sample/edit.php будет производить sample/edit.php), и если он столкнется с test/price/edit.php, он ничего не сделает. – hendr1x

0

Привет я столкнулся с той же проблемой некоторое время назад, и нашел, что это решение использовать его, если он удовлетворяет ваши потребности

<?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

К сожалению, я хочу поддерживать любые URL-адреса (например, price/sample/edit.php произвести sample/edit.php) – hendr1x

+0

@ hendr1x да, вот почему я предложил вам второй вариант с примером :) – user1234

+0

Жаль, что я не был чист. Я хотел, чтобы система возвращала price/edit.php в этом случае, а не только edit.php – hendr1x

Смежные вопросы