Удалять кавычки в значениях post на основе имени ключа массива

Я хочу, чтобы убрать цитаты из поля или имя "quote". В столбце все имена и значения полей совпадают и помещаются в массив, а затем вводятся в базу данных. Прежде чем SQL будет построен, и после того, как я построю массив значений, как я могу выделить полевую цитату, удалить кавычки, введенные пользователем, а затем добавить/сохранить содержимое в массиве $values для моего SQL? Вопросительная область начинается с комментария "удалять кавычки"

public function insertIntoDb($table, $carryUrl = NULL, $ext = '')
{
 if (in_array($table, $this->disallow_insert)) {
 self::show_error("Inserting into the table '{$table}' is not possible, check the configuration file if this is an error.");
 } elseif (!isset($table)) {
 self::show_error('Missing 'table' parameter in ' . __FUNCTION__);
 }
 $resultInsert = Nemesis::query("SHOW COLUMNS FROM {$table}");
 if (!$resultInsert) {
 self::show_error(QUERY_ERROR);
 }
 $fieldnames = array();
 if ($resultInsert->num_rows > 0) {
 while ($row = $resultInsert->fetch_array()) {
 $fieldnames[] = $row['Field'];
 $values = array_intersect_key($_POST, array_flip($fieldnames));
 // $values = array_filter($values, function($x) { return $x !== ''; });
 // <5.3 $values = array_filter($values, create_function('$x', 'return $x !== "";'));
 }
 }
 // remove quotes for testimonials
 if (array_key_exists('quote', array_change_key_case($values, CASE_LOWER))) {

 $values['quote'] = preg_replace("/<!--.*?-->/", "", $values); // remove quotes

 }
 // filter the array
 $values = self::filter($values);
 $sql = sprintf("INSERT INTO %s (created, created_by, %s) VALUES (NOW(), '$_SESSION[user_id]', '%s')", $table, implode(', ', array_keys($values)), implode("', '", $values));
 if ($this->debug) {
 echo '<p>' . $sql . '</p>';
 } elseif (Nemesis::query($sql)) {
 $msg = new Messages();
 $msg->add('s', QUERY_INSERT_SUCCESS);
 if ($table == 'projects') {
 $msg = new Messages();
 $msg->add('s', "Information was added to the database. Time to add images!");
 }
 if (!is_null($carryUrl) && isset($carryUrl)) {
 redirect($carryUrl . '?id=' . $_POST['id'] . '&table=' . $table . $ext);
 }
 } else {
 self::show_error(QUERY_ERROR);
 }
}
1 ответ

preg_replace - это функция, которая возвращает значение, а не пустоту. Вам нужно будет вернуть возвращаемое значение значениям $values['quote']:

// remove quotes for testimonials
if (array_key_exists('quote', array_change_key_case($values, CASE_LOWER))) {

 $values['quote'] = preg_replace("/(\"|')/", "", $values['quote']); // remove quotes

}

licensed under cc by-sa 3.0 with attribution.