我一直在使用这段代码
<?php
class PerchTemplateFilter_sol_en_cat_path extends PerchTemplateFilter {
public function filterAfterProcessing($value, $valueIsMarkup = false) {
// ORIGINAL STRING: solutions-en/rail-technologies/track-components/name-of-product
$mystring = $value;
$replace = ['solutions-en', '%2F'];
$str = '';
$oldstr = str_replace($replace, $str, $mystring);
$str_to_insert = 'XXX';
$findme = '/';
$pos = strpos($mystring, $findme); // I NEED THIS TO INSERT $str_to_insert AFTER THE SECOND FORWARD SLASH FOUND IN THE ORIGINAL STRING?
$value = substr_replace($oldstr, $str_to_insert, $pos, 0);
return $value;
// $value: /rail-technologies/track-components/XXX/name-of-product
// Insert string at specified position
// https://stackoverflow.com/questions/8251426/insert-string-at-specified-position
}
}
PerchSystem::register_template_filter('sol_en_cat_path', 'PerchTemplateFilter_sol_en_cat_path');
?>
我的字符串是: solutions-en/rail-technologies/track-components/name-of-product
我想用..: /rail-technologies/XXX/track-components/name-of-product
XXX只是一个占位符
我想我需要做一些与 $pos
来设置我想要的位置 XXX
要添加到字符串中。
我需要在 第二 前进斜杠,因为字符串可能包含不同的文本。
上面的代码输出了这个字符串。/rail-technoXXXlogies/track-components/ewosr-switch-lock
我似乎不知道如何插入... ... XXX
在第二次前砍后。
希望有人能提供一些帮助。
不如先爆炸成数组,然后内爆前两个项目。加入xxx,然后再内爆其他的项目?
function AddInTheMiddle($start, $where, $what){
$arr = explode("/", $what);
$str = implode("/", array_splice($arr,$start,$where)) . '/xxx/' . implode("/", $arr);;
return $str;
}
$str = 'solutions-en/rail-technologies/track-components/name-of-product';
$str = AddInTheMiddle(1, 2, $str);
谢谢你Andreas,你的帖子给了我需要的推动力。我最终还是这样做了。
// ORIGINAL $value: solutions-en/rail-technologies/track-components/name-of-product
$str = explode("/", $value);
$value = $str[1] . '/' . 'solutions' . '/' . $str[2] . '/';
return $value;
// Removed: solutions-en
// Added: solutions
// $value: rail-technologies/solutions/track-components/name-of-product
我能够添加 name-of-product
到我的模板中其他地方的新字符串的末尾。