繁体   English   中英

PHP替换字符串中第n个位置的2个字符

[英]PHP to replace 2 character at nth position in an string

我正在 codeignitor 中开发双语网站,我已经创建了语言文件。 一切正常,除非在切换语言时我想替换 url 中第 31 和第 32 位从 0 开始的语言缩写。

英文网址:

$url=http://localhost/abc/index.php/ en /news/title/new-version-of-goldendict-with-dzongkha

宗喀语网址:

$ URL = HTTP://localhost/abc/index.php/ DZ /新闻/标题/新版本的-goldendict与-不丹文

我只是想让 php 将en更改为dz

我试过

$url=http://localhost/abc/index.php/ en /news/title/new-version-of-goldendict-with-dzongkha

$lang_id='dz';

$old_lang=substr($url, 31, 2);

$newurl = str_replace($old_lang,$lang_id,$url);

然而,上面的代码将 dz 更改为 en 但也替换了 45 和 46 个字符。 这是转换后发生的情况。

$ URL = HTTP://localhost/abc/index.php/ DZ /新闻/标题/ DZ W-版本的-goldendict与-不丹文

任何有想法的人

由于您暗示国家/地区代码始终位于字符串中的第 31 位,因此您可以使用substr_replace函数来限制替换的范围。

$newurl = substr_replace($old_lang, $lang_id, $url, 31, 2);

另一种选择是按照$newurl = str_replace('/en/','/dz/',$url);在评论中提出的更具体的搜索字符串: $newurl = str_replace('/en/','/dz/',$url);

尝试这个 -

$url="http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha";

echo $str = substr_replace($url,'dz',31,2);

希望这会帮助你。

<?php

$url = "http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha";

function changeLanguage($url, $language)
{
    $new_url = "";
    $url_broken = explode("/", $url);
    foreach ($url_broken as $key => $value) {
        if (strpos($value, ".php")!==false) {
            $lang_index = $key+1;
            break;
        }
    }
    if (isset($lang_index)) {
        $url_broken[$lang_index] = $language;
    }
    $new_url = implode("/", $url_broken);
    return $new_url;
}

$url = changeLanguage($url, "dz");
var_dump($url);

这种方法将帮助您根据模式而不是位置来更改语言。 当然,我认为语言将在 *.php/ 之后

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM