Php preg_替换匹配精确单词

Php preg_替换匹配精确单词,php,regex,preg-replace,Php,Regex,Preg Replace,我试图用preg_replace替换PHP中的单词。在执行代码时,它将“汽车燃油盖”替换为“盖”,而不是“汽车零件” 所以,我已经尝试了另一种方法。我将原始值和替换值存储在数据库中,例如: 桌子 原件:汽车|摩托车|汽车|汽车 零件|活塞|摩托车|摩托车的金属燃油盖 更换:汽车零件 原名:帽子|棒球帽|帽子|比尼 替换:帽子 字符串是:汽车的燃油盖 代码是: $result = mysqli_query($connect, $query); while($row2 = mysqli_fe

我试图用preg_replace替换PHP中的单词。在执行代码时,它将“汽车燃油盖”替换为“盖”,而不是“汽车零件”

所以,我已经尝试了另一种方法。我将原始值和替换值存储在数据库中,例如:

桌子

原件:汽车|摩托车|汽车|汽车 零件|活塞|摩托车|摩托车的金属燃油盖 更换:汽车零件

原名:帽子|棒球帽|帽子|比尼 替换:帽子

字符串是:汽车的燃油盖

代码是:

$result = mysqli_query($connect, $query);
    while($row2 = mysqli_fetch_assoc($result)){
if(preg_match('/\b'.$row[suggestions].'\b/i', $string)){
$string = $row['description'];

但是,它将字符串替换为“hat”,而不是“auto parts”

如果
$find
数组不包含太多项,您可以通过从
$find
$replace
数组创建关联数组并从数组项构建单个正则表达式来解决问题,即,一个正则表达式,包含一个组,其中所有字符串都列为可选字符串,然后在找到匹配项后,替换为相应的
$replace

见:

$string=“汽车燃油盖”;
$find=数组('cap','fuel cap for car');
$replace=数组('hat','autoparts');
$arr=数组和组合($find,$replace);
usort($find,function($a,$b){//较长的短语必须放在第一位
返回strlen($b)-strlen($a);
});
echo preg_replace_回调('~\b(?:'.intlode('|',$find)。')\b~',函数($x)use($arr){
返回$arr[$x[0]];
},$string);
//=>汽车零件

如果需要精确匹配,可以使用。不需要正则表达式。难道您的代码不应该首先替换
帽子的
帽子
,留给您的是
汽车燃料帽
?然后,当它试图找到
汽车燃料帽
时,它将失败,留下最后一个字符串作为
汽车燃料帽
我的回答有帮助吗?
$result = mysqli_query($connect, $query);
    while($row2 = mysqli_fetch_assoc($result)){
if(preg_match('/\b'.$row[suggestions].'\b/i', $string)){
$string = $row['description'];