PHP替换字符串中第n个位置的2个字符
我正在开发双语网站在Codeignator和我已经创建了语言文件。除了在切换语言时,我想替换url中从0开始的第31位和第32位的语言缩写外,所有操作都正常 英文网址: $url=http://localhost/abc/index.php/en/news/title/带有宗卡的新版本goldendict 宗喀网址: $url=http://localhost/abc/index.php/dz/news/title/带有DZONGKA的goldendict新版本 我只希望php将en更改为dz 我试过了 $url=http://localhost/abc/index.php/en/news/title/带有宗卡的新版本goldendict $lang_id='dz' $old_lang=substr($url,31,2) $newurl=str\u replace($old\u lang,$lang\u id,$url) 然而,上述代码将dz更改为en,但也替换了45和46个字符。这就是转换后发生的情况 $url=http://localhost/abc/index.php/dz/news/title/dzw-version-of-goldendict-with-dzongkhaPHP替换字符串中第n个位置的2个字符,php,str-replace,Php,Str Replace,我正在开发双语网站在Codeignator和我已经创建了语言文件。除了在切换语言时,我想替换url中从0开始的第31位和第32位的语言缩写外,所有操作都正常 英文网址: $url=http://localhost/abc/index.php/en/news/title/带有宗卡的新版本goldendict 宗喀网址: $url=http://localhost/abc/index.php/dz/news/title/带有DZONGKA的goldendict新版本 我只希望php将en更改为dz
任何知道发生了什么的人由于您暗示国家/地区代码始终位于字符串中的第31位,因此您可以使用该函数限制替换的范围
$newurl = substr_replace($old_lang, $lang_id, $url, 31, 2);
另一种选择是,按照斯库齐在评论中的建议,在搜索字符串中更加具体:$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);
希望这能对您有所帮助。好旧$newurl=str_replace(“/en/”、“/dz/”、$url)代码>可能足够了?为什么需要替换语言字符串?您应该根据当前语言正确构建URL。包括现在似乎固定为一种语言的标题。工作没有任何问题,我看到你在那里做了什么,太糟糕了,我假设substr_replace只适用于5个参数。。。谢谢@Afshan
<?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);