[英]PHP why is my fourth parameter in str_replace not working?
我是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,但它們仍然執行兩次替換,最終得到以下輸出:
“前臂,小腿,胸部,胸部,小腿,前臂非常適合訓練!”
代替:
“前臂,小腿,胸部,四頭肌,三頭肌,二頭肌非常適合訓練!”
...為什么?!
手冊說的是:
如果通過,它將設置為執行的替換次數。
此外,函數簽名帶有&
符號,以指示該函數寫入傳遞給它的變量中:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
簡而言之,它是報告,而不是設置。
每次替換都在執行下一個替換之前發生。
第2次和第4次替換的類似問題。 您傳遞給str_replace的“ 1”沒有任何作用。
如果只希望替換第一個實例,請考慮使用preg_replace 。
第四個參數(來自手冊 )...
計數
如果通過,它將設置為執行的替換次數。
所以不是要做的事,而是要做的事。
作為替代方案,嘗試...
$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!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.