我在 php :
中处理这个简单的脚本$a = array('la','co');
foreach ($a as $unboldeda){
$boldeda[] = '<b style="color: teal;">'.$unboldeda.'</b>';
}
$c = 'land of copper';
echo '<a href="#">'.str_replace($a, $boldeda, $d=$c).'</a>';
它应该导致 co </ strong> pper
的 la但结果是:
co </ strong> lor:teal;&#34;&gt; co </ strong> pper的土地
bacause str_replace()
不仅替换$ d的值,而且还替换$ c的值,因此在第二次迭代中$ c也将包含html标记。在我看来,这对编程语言没有多大意义。你会如何解决这个问题?
答案 0 :(得分:3)
strtr
的解决方案:
$a = array('la','co');
foreach ($a as $unboldeda){
$boldeda[$unboldeda] = '<b style="color: teal;">'.$unboldeda.'</b>';
}
$c = 'land of copper';
echo '<a href="#">'.strtr($c, $boldeda).'</a>';
说明:
你的行
echo '<a href="#">'.str_replace($a, $boldeda, $d=$c).'</a>';
与$d
或$c
。
str_replace
会将值$a
中的项目更改为$boldeda
,这是操作$d=$c
的结果。结果此分配为字符串land of copper
,您的$d
和$c
都未触及。您可以通过输出来检查它们。
更进一步,在str_replace
联机帮助页上,您会看到它有替换订单问题,它告诉您:
因为str_replace()从左向右替换,所以在进行多次替换时,它可能会替换先前插入的值。
因此,str_replace
首先用标记取代la
,标记中包含color
,
第二个str_replace
用新替换取代co
。不幸的是,color
一词co
,所以,str_replace
也会替换它,因为它不会“记住”已经替换的内容,而不是
答案 1 :(得分:0)
您认为这部分是做什么的
$d
它将$c
分配给showDiv
的值,然后返回该值。
一次只做一件事