В codeigniter как да премахнете нежелани знаци или символи в низ

Когато стартирам импортиране на csv с помощта на codeigniter php, останах с тази грешка в mysql

въведете описание на изображението тук

Причината за тази грешка е нежелани знаци или символи в низа.

Това е кодът на CodeIgniter, който използвам.

$this->db->where('designationName', $row[$ex_start + 3]);
$q = $this->db->get('designation');
if ($q->result()) {
$id = $q->result_array();
    $designation = $id[0]['iddesignation'];

} else {
    $data = array(
        'designationName' => $row[$ex_start + 3], //this is the variable that get string 
        'designationDate' => date('Y-m-d'),
        'status_idstatus' => '1'
    );
    $this->db->insert('designation', $data); //this is the point that error occurs
    $designation = $this->db->insert_id();

}

Как да избегна този вид знаци или символи?


person Supun Abesekara    schedule 22.02.2018    source източник


Отговори (1)


можете да направите

$data = array(
    'designationName' => preg_replace('/[^a-zA-Z0-9-_\.]/','', $row[$ex_start + 3])
    'designationDate' => date('Y-m-d'),
    'status_idstatus' => '1'
);

Забележка: Това ще позволи запазването на обикновен текст+числа. Не, всички специални знаци ще преминат


Редактиране на 01

Ако трябва да разрешите някои специални знаци (всички знаци на клавиатурата)

 preg_replace('/[^A-Za-z0-9_~`\/@!$.%^#&*\\()+-=]/','', $row[$ex_start + 3])

Или можете да използвате Escaping Queries в codeigniter< /a>

  1. $this->db->escape()
  2. $this->db->escape_str()
  3. $this->db->escape_like_str()
person Abdulla Nilam    schedule 22.02.2018
comment
Благодаря, сър, за решението. Ще го проверя и ще ви уведомя. - person Supun Abesekara; 22.02.2018
comment
Сър, Escaping Queries в codeigniter не работи, но preg_replace заменете тези знаци, нещо е, че трябва да добавя всички символи на клавиатурата към този код, за да позволя преминаването - person Supun Abesekara; 22.02.2018
comment
@SupunAbesekara, да, в този регулярен израз се пропускат само букви+число. ако разрешавате специален символ, можете да ги добавите ръчно - person Abdulla Nilam; 22.02.2018
comment
Господине, използвам така preg_replace('/[^A-Za-z0-9_~\/@!$.%^#&*\()+-=]/','', $row[$ex_start + 3])` и работи за мен. - person Supun Abesekara; 22.02.2018
comment
Радвам се да помогна :) - person Abdulla Nilam; 22.02.2018