[英]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.