我有一个脚本,它接受一些用户输入,清理它并尝试替换字符串中的值。我发现我使用的str替换似乎不匹配,例如11 +tum
。这是为什么?我能以某种方式修复它吗? preg替换是否管理它,如果是,那么在preg替换中看起来如何?
功能
脚本为全文查询准备用户输入字符串,所有单词都是必填字符,因此每个空格都替换为空格+。但是像11 tum
这样的短语需要可搜索,因此需要用双引号括起来。失败的部分是,即使在比较之前回显了价值,但是scirpt似乎不能匹配某些短语,这表明它们是相同的,例如, 11 tum
代码:
//processedQuery e.g. 'laptop 11 tum'
$ processedQuery = str_replace(“”,“+”,$ processedQuery);
echo processedQuery; //解析笔记本电脑+11 + tum
foreach($commonQuery as $value){ //$commonQuery = array("11 tum", "13 tum", "15 tum", "17 tum", "asus eee", "asus 1005","asus 1010")
//compile : simulated query format error
$simulatedErrorValue = str_replace(" "," +",$value);
echo simulatedErrorValue; //parses 11 +tum
$processedQuery = str_replace($simulatedErrorValue,'"'.$value.'"',$processedQuery);
}
echo $ processedQuery; //解析笔记本电脑+11 +转
//为asus eee交换11个转换(另一个commonQuery和$ processedQuery的最后一个回显显示正确的laptop +"asus eee"
答案 0 :(得分:0)
您将输入混淆到您的功能。我通过一个小小的修改得到了理想的结果:
11 +tum
laptop +"11 tum"
asus +eee
laptop +"11 tum"
您的错误就在这一行:
$commonQuery = array("11 tum, asus eee")
这是一个只有1名成员的数组。
您想要将数组更改为包含2个成员:
$commonQuery = array("11 tum" , "asus eee");
这是我的完整代码:
<?php
$processedQuery = 'laptop 11 tum';
$processedQuery = str_replace(" "," +",$processedQuery);
$commonQuery = array("11 tum" , "asus eee");
foreach ( $commonQuery as $value ) { //$commonQuery = array("11 tum, asus eee")
//compile : simulated query format error
$simulatedErrorValue = str_replace(" "," +",$value);
echo "$simulatedErrorValue\n"; //parses 11 +tum
$processedQuery = str_replace($simulatedErrorValue,'"'.$value.'"',$processedQuery);
echo "$processedQuery\n";
}
?>