[英]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.