Я работаю над программным обеспечением для форума PHP ( FluxBB ), и пользователь столкнулся с довольно интересной ошибкой, которая, как кажется - 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 может быть причиной ошибки, так как запрос, выдаваемый отладчиком, сохраняется перед выполнением.
Я на самом деле пытаюсь оказать поддержку, но не могу найти разумного решения ...