我试图创建一个帮助函数,它将将语言的简短名称替换为它们的全名。
我有一个常量文件,它看起来像这样(使用laravel,这就是为什么常量是这样的):
<?php
return [
'languages' => [
'names' => [
'Bulgarian' => 'bg',
'Danish' => 'da',
'German' => 'de',
'English' => 'en'
...
],
]
];到目前为止,我的功能如下:
public static function replaceName($string = '')
{
$langName = Config::get('constants.languages.names');
foreach($langName as $langKey => $langValue)
{
$search = array($langValue);
$replace = array($langKey);
}
return str_replace($search, $replace, $string);
}但它仍然不起任何作用吗?
发布于 2016-12-22 16:13:52
您可以将array_search用作:
array_search('de', Config::get('constants.languages.names')) // returns German来自文档
在数组中搜索给定的值,如果成功返回第一个相应的键。
发布于 2016-12-22 16:11:13
去罗马的一条路。
public static function replaceName($string = '')
{
$langName = Config::get('constants.languages.names');
foreach($langName as $langKey => $langValue)
{
$search[] = " $langValue ";
$replace[] = " $langKey ";
}
return str_replace($search, $replace, $string);
}它只在它前后用空格替换完整的单词!
我们不想Ben变成BEnglish!)如果不需要,删除空格。
##############################################
当$string仅以de作为内容时,则:
public static function replaceName($string = '')
{
$langName = array_flip(Config::get('constants.languages.names'));
return isset($langName[$string])?$langName[$string]:$string;
}https://stackoverflow.com/questions/41287275
复制相似问题