Str替换似乎不匹配某些字符串

时间:2011-07-23 21:31:35

标签: php str-replace string

我有一个脚本,它接受一些用户输入,清理它并尝试替换字符串中的值。我发现我使用的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"

1 个答案:

答案 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";
}
?>