我尝试创建一个Helper函数,该函数将短语替换为全名。
我有一个常量文件,看起来像这样(使用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);
}
但它仍然没有任何想法?
答案 0 :(得分:3)
您可以使用array_search
作为:
array_search('de', Config::get('constants.languages.names')) // returns German
来自docs
在数组中搜索给定值,如果成功则返回第一个相应的键。
答案 1 :(得分:0)
罗马的一种方式。
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
! ;)如果不需要,请删除空格。
############################################## < / p>
当$string
仅有de
作为内容时,则:
public static function replaceName($string = '')
{
$langName = array_flip(Config::get('constants.languages.names'));
return isset($langName[$string])?$langName[$string]:$string;
}