0
我有一個查詢,我試圖做的是當用戶搜索我的字謎解算器時,他們可能會輸入一個通配符作爲?在搜索字段中。php |通過woldcard尋找不在原始搜索中的字母
<input type="text" name="l">
假設用戶輸入「tes?」
我的查詢會發現每一個字可以以這些字母包括1個通配符以及
SELECT `word`, 0+IF(`a` > 0, `a` - 0, 0)+IF(`b` > 0, `b` - 0, 0)+IF(`c` > 0, `c` - 0, 0)+IF(`d` > 0, `d` - 0, 0)+IF(`e` > 1, `e` - 1, 0)+IF(`f` > 0, `f` - 0, 0)+IF(`g` > 0, `g` - 0, 0)+IF(`h` > 0, `h` - 0, 0)+IF(`i` > 0, `i` - 0, 0)+IF(`j` > 0, `j` - 0, 0)+IF(`k` > 0, `k` - 0, 0)+IF(`l` > 0, `l` - 0, 0)+IF(`m` > 0, `m` - 0, 0)+IF(`n` > 0, `n` - 0, 0)+IF(`o` > 0, `o` - 0, 0)+IF(`p` > 0, `p` - 0, 0)+IF(`q` > 0, `q` - 0, 0)+IF(`r` > 0, `r` - 0, 0)+IF(`s` > 1, `s` - 1, 0)+IF(`t` > 1, `t` - 1, 0)+IF(`u` > 0, `u` - 0, 0)+IF(`v` > 0, `v` - 0, 0)+IF(`w` > 0, `w` - 0, 0)+IF(`x` > 0, `x` - 0, 0)+IF(`y` > 0, `y` - 0, 0)+IF(`z` > 0, `z` - 0, 0) AS difference FROM `TWL06` WHERE LENGTH(`word`) <= 4 HAVING difference <= 1 ORDER BY LENGTH(`word`) DESC
我的查詢工作正常做。我想要做的是基於它找到的單詞,我希望它將單詞中發現的字母顏色更改爲藍色,以通知用戶這是通配符。
因此,如果用戶輸入「tes?」結果將是「測試」在這一點上,我希望能夠確定使用該字母的次數,比較它在原始搜索中輸入的次數,然後將顏色更改爲藍色。因此,這將是這個樣子
TES<span style="color:#0000FF">T</span>
我嘗試使用foreach循環使用的preg_match,以確定這一點,但我似乎無法得到它的正確排列。任何幫助,將不勝感激。以下是我的代碼示例,其中原始搜索詞與$ l關聯爲「TES?」。用你的戰略
SELECT `word`, 0+IF(`a` > 0, `a` - 0, 0)+IF(`b` > 0, `b` - 0, 0)+IF(`c` > 0, `c` - 0, 0)+IF(`d` > 0, `d` - 0, 0)+IF(`e` > 1, `e` - 1, 0)+IF(`f` > 0, `f` - 0, 0)+IF(`g` > 0, `g` - 0, 0)+IF(`h` > 0, `h` - 0, 0)+IF(`i` > 0, `i` - 0, 0)+IF(`j` > 0, `j` - 0, 0)+IF(`k` > 0, `k` - 0, 0)+IF(`l` > 0, `l` - 0, 0)+IF(`m` > 0, `m` - 0, 0)+IF(`n` > 0, `n` - 0, 0)+IF(`o` > 0, `o` - 0, 0)+IF(`p` > 0, `p` - 0, 0)+IF(`q` > 0, `q` - 0, 0)+IF(`r` > 0, `r` - 0, 0)+IF(`s` > 1, `s` - 1, 0)+IF(`t` > 1, `t` - 1, 0)+IF(`u` > 0, `u` - 0, 0)+IF(`v` > 0, `v` - 0, 0)+IF(`w` > 0, `w` - 0, 0)+IF(`x` > 0, `x` - 0, 0)+IF(`y` > 0, `y` - 0, 0)+IF(`z` > 0, `z` - 0, 0) AS difference FROM `TWL06` WHERE LENGTH(`word`) <= 4 HAVING difference <= 1 ORDER BY LENGTH(`word`) DESC
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$getvalues = str_split($row['word']);
foreach($getvalues as $letter) {
if (!preg_match('/'.$letter.'/',$l)) {
$buildword = '<span style="color:#0000FF">'.$letter.'</span>';
} else {
$buildword = $letter;
}
}
}
它強調所有的字母爲藍色 –
我不知道這個問題可能是什麼,因爲我測試了它,它只是強調了在一個時間一個字母。 –
好吧,那是因爲我用大寫字母回覆了結果,使它們變得更低,而且效果很好。非常感謝 –