Как сделать str_ireplace таким же случаем

0

Как сделать 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 love petty

как это сделать? на самом деле, мне просто нужно это, если первая буква в верхнем регистре или все буквы в верхнем регистре.

  • 0
    В качестве действительно уродливого обходного пути вы можете просто использовать str_replace и дважды перечислять каждое значение или, если множество значений дублируют массив непосредственно перед изменением, добавляя строчную и прописную версии.
Теги:
string

1 ответ

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);
}

И теперь это будет просто заменено на случай. Немного подробный, возможно, и вам нужны жестко скопированные списки, но ваш вопрос казался довольно конкретным, а не спрашивал о "любом возможном слове" (в этом случае вам нужно будет использовать что-то вроде preg_replace_callback)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню