2009-11-20 2 views
0

Я использую str_ireplace(), чтобы удалить экземпляры строк в массиве, и я возвращаю количество подсчитанных событий, но на самом деле это не замена.str_ireplace() не аккуратно удаляет «иглы»

//replace occurances of insert, update, delete, select 
$dmlArray = array('select', 'update', 'delete', 'insert'); 

str_ireplace($dmlArray,'-- replaced DML -- ',$clean['comment'],$Incount); 

Где $ clean ['comment'] будет массивом $ _POST.

Например, $clean['comment'] = "SELECT, insert, UPDATE, DEleTe";

В последней строку должна быть "- заменена DML -, - заменен DML -, - заменено DML -, - заменить DML -";

Однако это не так.

+0

Что вы получаете вместо этого? – Gumbo

+0

Я получаю исходную строку. Это похоже на работу, но это не так. –

+3

«Похоже, вы пишете половинчатую попытку дезинформировать контент для вставки в строковый литерал SQL. Вы хотите помочь? »(\ *) Получить помощь в том, как вместо этого использовать SQL-ускорение (\ *) Просто продолжайте ударять головой об этом – bobince

ответ

3

Функция str_ireplace не меняет своих аргументов. Он возвращает результат. Вот исправление для вашего кода:

$clean['comment'] = str_ireplace($dmlArray, '-- replaced -- ', $clean['comment'], $Incount); 
+0

Я знал, что забыл что-то простое, спасибо! –

1

Я запустил ваш код, и он работает так, как ожидалось.

echo str_ireplace(
    array('select', 'update', 'delete', 'insert'), 
    '-- replaced DML -- ', 
    'SELECT, insert, UPDATE, DEleTe', 
    $Incount); 

выше Выведет

-- replaced DML -- , -- replaced DML -- , -- replaced DML -- , -- replaced DML -- 

Просто имейте в виду, что входная строка не передается в виде ссылки, так что вы должны использовать возвращаемое значение, чтобы получить строку со значениями заменены.

Смежные вопросы