PHP, почему мой четвертый параметр в str_replace не работает? - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в PHP и не могу понять, почему это не работает.

<?php
$count = 1;
$body = 'Biceps, Triceps, Quadriceps, Chest, Calves, Forearms are great to train!';
$body = str_replace('Chest', 'Quadriceps', $body);
$body = str_replace('Calves', 'Triceps', $body);
$body = str_replace('Forearms', 'Biceps', $body);
$body = str_replace('Biceps', 'Forearms', $body, $count);
$body = str_replace('Triceps', 'Calves', $body, $count);
$body = str_replace('Quadriceps', 'Chest', $body, $count);
echo $body;
?>

Для последних трех замен, хотя четвертый параметр, который предположительно определяет количество замен,при значении 1 они все равно выполняют замену дважды, и я получаю следующие выходные данные:

'Предплечья, икры, грудь, грудь, икры, предплечья отлично подходят для тренировки!'

вместо:

'Предплечья, икры, грудь, квадрицепс, трицепс, бицепс отлично подходят для тренировки!'

... почему?!

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Каждая замена происходит перед выполнением следующей.

  • В третьей замене вы меняете «Предплечья» на «Бицепс».
  • В четвертой замене вы меняете его обратно, когда вы меняете
    «Бицепс» на «Предплечья».

Аналогичная проблема со 2-й и 4-й заменами.«1», который вы передаете str_replace , ничего не делает.

Попробуйте использовать preg_replace , если вы хотите заменить только первый экземпляр.

0 голосов
/ 12 июня 2018

Что говорит руководство :

Если оно пройдено, будет установлено количество выполненных замен.

Кроме того, сигнатура функции имеет символ &, указывающий, что функция записывает в передаваемую вами переменную:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Короче, это отчет, а не настройка.

0 голосов
/ 12 июня 2018

Четвертый параметр (из руководства ) ...

count

Если он будет принят, он будет установлен наколичество выполненных замен.

Так что не сумма, а сумма выполненная.

Как альтернатива, попробуйте ...

$body1 = strtr($body, 
    ['Chest'=>'Quadriceps','Calves' => 'Triceps', 
        'Forearms' => 'Biceps', 'Biceps' => 'Forearms',
        'Triceps' => 'Calves', 'Quadriceps' => 'Chest'
    ] );

Какие выходы

Forearms, Calves, Chest, Quadriceps, Triceps, Biceps are great to train!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...