Smarty удаляет последний символ из строки, если это ‘/’

#smarty

#smarty

Вопрос:

Я пытаюсь использовать последний символ из переменной smarty. Я знаю, что я могу удалить последний символ с помощью substr или также заменить символ на replace . Но я хочу удалить последний символ, только если он заканчивается на /

Например, моя строка /homepage/ , я хотел бы стать /homepage

Но если у меня есть /homepage , это должно быть /homepage

Редактировать :

Также должно работать для строки /homepage/? -> /homepage?

Ответ №1:

Вы можете использовать Smarty regex_replace и сопоставить с , если это последний символ с /$ , и заменить его пустой строкой.

Таким же образом вы можете использовать regex_replace для замены /? окончания на ?

{$variable|regex_replace:"//$/":""|regex_replace:"//?$/":"?"}

Комментарии:

1. Что, если моя строка является /homepage/ и все еще хочет удалить последний /

2. $variable — это переменная, содержащая вашу строку.

3. Да, я знаю, но если моя строка /homepage/? Как я могу удалить последнюю / ?

4. Я буквально опубликовал полную строку, которую вы должны использовать. {$variable|regex_replace:"//$/":""}

5. Является ли строка /homepage/? или /homepage/ ?

Ответ №2:

Используйте модификатор переменной Smarty regex_replace :

 {$url|regex_replace:"#/$#":""}
  

Комментарии:

1. Это полностью удаляет мою строку