我正在研究一個PHP論壇軟件(FluxBB),並且一位用戶遇到了一個相當有趣的錯誤,那看起來--PHP在字符串中間插入了一個省略號。PHP將省略號插入字符串的中間(!)?
由於我在網上發現的類似錯誤,我不得不說這個代碼位於一個函數中,並且$db
是一個全局變量。
這裏是(簡化)代碼:
// Get unique words from the above arrays
$unique_words = array_unique(array_merge($words['add']['post'], $words['add']['subject']));
if (!empty($unique_words))
{
$result = $db->query('SELECT id, word FROM '.$db->prefix.'search_words WHERE word IN('.implode(',', preg_replace('#^(.*)$#', '\'\1\'', $unique_words)).')', true) or error('Unable to fetch search index words', __FILE__, __LINE__, $db->error());
$word_ids = array();
while ($row = $db->fetch_row($result))
$word_ids[$row[1]] = $row[0];
現在,$unique_words
由多個法語單詞(在這種情況下),和省略號獲取逗號之前和結束引號後面右側添加。這意味着它會在內爆呼叫期間添加,這是毫無意義的。
注意:轉義單詞被照顧。
事實上,只有PHP可能會導致錯誤,因爲調試器吐出的查詢在執行前會被保存。
實際上,我想給予支持,但我不能拿出一個合理的解決方案......
你能提供'$ words ['add'] ['post']'和'$ words ['add'] ['subject']'的示例數據,以便我們重現這種行爲嗎? var_export($ words ['add'])'的輸出會很好。 – VolkerK
我真的不能 - 雖然我可以要求他們。查看示例查詢的下一個答案。 你可以在這裏得到原始主題的更多信息:http://fluxbb.org/forums/post/26036/#p26036 (正如我所說,我只是在繼續這個,因爲這是最古怪的一個我到目前爲止遇到的錯誤) – Franz
是的,我的意思是省略號。 – Franz