PHP 替换字符串中第 n 个位置的 2 个字符
PHP to replace 2 character at nth position in an string
我正在使用 codeignitor 开发双语网站,并且已经创建了语言文件。一切正常,除了切换语言时,我想替换 url 中从 0 开始的第 31 和 32 位的语言缩写。
英语 Url :
$url=http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha
宗喀语 Url :
$url=http://localhost/abc/index.php/dz/news/title/new-version-of-goldendict-with-dzongkha
我只想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/news/title/dzw-version-of-goldendict-with-dzongkha
任何知道发生了什么事的人
由于您暗示国家代码始终位于字符串中的第 31 位,因此您可以使用 substr_replace
函数来限制替换范围。
$newurl = substr_replace($old_lang, $lang_id, $url, 31, 2);
另一种选择是根据 Scuzzy 在评论中提出的更具体的搜索字符串:$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/
之后
我正在使用 codeignitor 开发双语网站,并且已经创建了语言文件。一切正常,除了切换语言时,我想替换 url 中从 0 开始的第 31 和 32 位的语言缩写。
英语 Url :
$url=http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha
宗喀语 Url :
$url=http://localhost/abc/index.php/dz/news/title/new-version-of-goldendict-with-dzongkha
我只想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/news/title/dzw-version-of-goldendict-with-dzongkha
任何知道发生了什么事的人
由于您暗示国家代码始终位于字符串中的第 31 位,因此您可以使用 substr_replace
函数来限制替换范围。
$newurl = substr_replace($old_lang, $lang_id, $url, 31, 2);
另一种选择是根据 Scuzzy 在评论中提出的更具体的搜索字符串:$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/
之后