匹配字符串

时间:2015-09-18 21:28:05

标签: php

我遇到的问题是代码为所有“女性”值返回“男人”,因为它还包含“男性”这个词。我试过“〜\ bWord \ b~”徒劳无功。

如何编辑以下代码以返回不同的值?

function replaceWords($value) {
//here are predefined values
$predefined = array(
array(
'search'=>'Women',
'replaceWith'=>'Women'
),
array(
'search'=>'Men',
'replaceWith'=>'Men'
)
);
//search and replace
$found = false;
foreach ($predefined as $item) {
$search = array_map('trim', explode(',', $item['search']));
foreach ($search as $s) {
if (strstr(strtolower($value), strtolower($s))) {
$found = true;
$value = $item['replaceWith'];
break;
}
}
}
return ($found)?$value:"";
}

非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

根本不使用strtolower()

如果你保持区分大小写的话,“女人”和“男人”将不匹配。

答案 1 :(得分:0)

这对我有用:

if (preg_match("/\b".strtolower($s)."\b/i", strtolower($value)) ) {