我希望以下代码只替换完全匹配的字符串,而不是部分匹配。例如;取代"海军"与"蓝"不是"海军船"与" Blue Ship"
<?php
function replaceWords($value) {
//here are predefined values
$predefined = array(
array(`enter code here`
'search'=>'Navy, Dark Blue, Blackcurrant, Blue/White, Navy Blue',
'replaceWith'=>'Blue'
),
array(
'search'=>'Rose, Dark Red, Pink, Maroon, Burgundy',
'replaceWith'=>'Red'
)
);
//search and replace
foreach ($predefined as $item) {
$search = array_map('trim', explode(',', $item['search']));
$value = str_ireplace($search, $item['replaceWith'], $value);
}
return $value;
}
答案 0 :(得分:0)
如果要替换精确字符串(如果它们存在于数组中),只需检查它是否存在于数组中并返回结果(如果存在)。
where
但是,如果要忽略大小写,请将预定义值中的所有元素替换为小写,并使用foreach ($predefined as $item) {
if (in_array($value, $search)) {
return $item['replaceWith'];
}
}
而不是strtolower($value)
。
答案 1 :(得分:0)
你可以试试这个:
$value = preg_replace("/\b(".$search.")\b/", $item['replaceWith'],$value);
答案 2 :(得分:0)
阵列(enter code here
&#39;搜索&#39; =&gt;&#39;海军舰船&#39;,
&#39; replace&#39; =&gt;&#39; Navy Ship&#39;
),
它将阻止海军舰艇被替换。