2015-02-08 2 views
0

Имея странную проблему, я не могу понять после нескольких минут возиться.str_replace() добавляет дополнительное пространство для его ввода

$quotifiedValues = "'" . str_replace(",", "', '", $string) . "'"; 

У меня есть эта строка, чтобы процитировать все, что готово для SQL.

Предположим, что $ string = "key, value".

$ quotedValues ​​= должно быть "ключ", 'значение' ".

Что это на самом деле, это «ключ», «значение».

Решающее значение здесь - наличие дополнительного пространства. Значение слова имеет префикс дополнительного пространства. Я проверил входы и, конечно же, лишнего места не было. Но я не могу исключить его из вывода str_replace(). Любые советы о том, что происходит, очень ценятся.

+0

Просто крошечное предложение: вы действительно должны смотреть на подготовленные заявления. – SuperSaiyan

ответ

2

сделать что

$quotifiedValues = "'" . str_replace(", ", "', '", $string) . "'"; 

Обратите внимание, что мы заменим ", " теперь вместо ",".

+0

Не упоминается в вопросе, но что, если нет места. Замена не удалась. -1. – SuperSaiyan

1

Использование preg_replace.

$string = "key , value"; 
echo "'" . preg_replace("/\s*,\s*/", "', '", $string) . "'"; 

На серьезной ноте, следует использовать подготовленные заявления. Такие хаки иногда могут вызвать у вас неприятности.

+0

Не упоминается в вопросе, но что, если нет запятой. Замена не удалась. -1. (не совсем) – Cthulhu

+0

SQL-запросы нуждаются в запятой. Пространство необязательно. – SuperSaiyan

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