在php字符串的第二个斜线后插入一些文字?

问题描述 投票:0回答:2

我一直在使用这段代码

<?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 在第二次前砍后。

希望有人能提供一些帮助。

php
2个回答
3
投票

不如先爆炸成数组,然后内爆前两个项目。加入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);

https:/3v4l.orgm98io


0
投票

谢谢你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 到我的模板中其他地方的新字符串的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.