我正在使用twig和Codeigniter,我正在尝试为菜单创建链接。
链接的名称如下所示:
about_us, 家, our_products_and_activities, send_us_feedback
我的结局应该是:
about_us, 家, 我们的产品, send_us
如何在第二个下划线后删除所有?
这是我到目前为止所做的事情(有点混乱但部分有效)
<ul class="sidebar-menu">
{% for link in menu['links'] %}
<li class="treeview">
// remove spaces and added lower dashes instead
{% set links_str = link.page_name|lower|replace({'
':'_'})|striptags %}
// breaks str to array
{% set striped_links = links_str|split('_') %}
// create new array from the portion i need
{% set links_values = [striped_links.0,striped_links.1] %}
// join them all and added lower dash
{% set new_values = links_values|join('_') %}
{{ dump(new_values) }}
</li>
{% endfor %}
</ul>
现在我得到 about_us,home_,our_products_,send_us _
我可以删除最后一个较低的短划线...但我正在寻找更优雅的方式。
感谢。
答案 0 :(得分:1)
延长树枝
$twig->addFilter(new Twig_SimpleFilter('break_on', function($value, $character, $position = 1) {
return substr($value, 0, strposX($value, $character, $position));
});
枝条
{{ 'our_products_and_activities' | break_on('_', 2) }}
全局函数
function strposX($haystack, $needle, $number){
if($number == 1){
return strpos($haystack, $needle);
}elseif($number > 1){
return strpos($haystack, $needle, strposX($haystack, $needle, $number - 1) + strlen($needle));
}else{
return error_log('Error: Value for parameter $number is out of range');
}
}