2016-06-22 2 views
0

Я хочу изменить свой шаблон php, но я не могу понять это правильно. Я использую механизм шаблонов Smarty.php line Smarty engine engine reverse stristr

Мой PHP по умолчанию строка выглядит следующим образом:

{$childItem->getLabel()} 

Это делает дисплей HTML как это:

MY TEXT - MY SUB TEXT 

Я хочу, чтобы удалить все содержимое перед -. Так что он отображает только часть MY SUB TEXT.

Я попробовал это, но это не работает, потому что удаляет содержимое после знака:

{$childItem->getLabel()|stristr:'-' : true} 

Как я могу это исправить?

ответ

1

дополнительный «истинный» параметр вы передаете к stristr относится к $ before_needle, так что вы получите обратно часть строки перед дефисом. К сожалению, удалив это, вы вернете часть строки после и включите дефис, то есть «MY SUB TEXT».

Чистое решение было бы использовать explode, а затем использовать второй элемент результирующего массива, например:

{assign var="splitItem" value=" - "|explode:$childItem->getLabel()} 
{$splitItem[1]} 
1

Что касается PHP документации для stristr:

Если TRUE, stristr() возвращает часть копны до первого появления иглы (без иглы).

однако, как нормальное поведение функции будет включать иглу и текст после него, и это не совсем то, что вы хотите, вы также должны удалить его с заменить, так:

{$childItem->getLabel()|stristr:'-'|replace:'-':''} 
Смежные вопросы