Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 匹配字符串中的精确字符串_Php - Fatal编程技术网

Php 匹配字符串中的精确字符串

Php 匹配字符串中的精确字符串,php,Php,我遇到了一个问题,代码为所有“女性”值返回“男性”,因为它还包含“男性”一词。我尝试了“~\bWord\b~”但没有成功 如何编辑下面的代码以返回不同的值 function replaceWords($value) { //here are predefined values $predefined = array( array( 'search'=>'Women', 'replaceWith'=>'Women' ), array( 'search'=>'Men', 'repl

我遇到了一个问题,代码为所有“女性”值返回“男性”,因为它还包含“男性”一词。我尝试了“~\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:"";
}

非常感谢您的帮助。

请不要使用strtolower()

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

这对我来说很有用:

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

您好,它将用不同的单词替换字符串为单个单词。例如“男人喜欢小部件”并将其改为“男人”谢谢,我也这么想。你能告诉我人们会怎么写:“如果(strstrstr(strtolower($value),strtolower($s)){”