如何使str_ireplace同样的情况

时间:2015-03-06 18:06:28

标签: php string

如何使str_ireplace与小写和大写相同。 例子

 $letters = array('jonny', 'gennie');
 $fruit   = array('ponny', 'petty');
 $text    = 'JONNY love Gennie';
 $output  = str_ireplace($letters, $fruit, $text);
 echo $output;

所以实际输出是:

  

ponny love petty

但我想这样

  

PONNY爱小资

怎么做?实际上我只需要它,如果第一个字母是大写或所有字母都是大写。

1 个答案:

答案 0 :(得分:0)

您在示例中使用了明确的硬编码值,因此最简单的方法是使用str_replace代替str_ireplace,并为小写和大写字符串替换执行传递。你可以简单地从小写数组中构建大写和句子数组,然后你甚至不需要做任何工作:

$find_lc = array('moo', 'cow', 'something');
$find_uc = array_map('str_to_upper', $array);
$find_sc = array_map('ucfirst', $array);
$searches = array($find_lc, $find_uc, $find_sc);

$replace_lc = array(...);
$replace_uc = array(...);
$replace_sc = array(...);
$replacements = array($replace_lc, $replace_uc, $replace_sc);

$converted = $input;
for($i=0; $i<count($searches); $i++) {
  $converted = str_replace($searches[$i], $replacements[$i], $converted);
}

现在它只是被正确替换了。或许有点冗长,你需要硬编码列表,但你的问题似乎非常具体,而不是询问&#34;任何可能的单词&#34; (在这种情况下,您需要使用preg_replace_callback

之类的东西