我已经编写了下面的代码来检查一个单词是否是回文,但我想知道如何检查一个短语是否也是一个。
public function index() {
if($this->session->userdata('is_logged_in')){
$data = array();
if ($this->input->is_ajax_request()) {
/** this will handle datatable js ajax call * */
/** get all datatable parameters * */
$search = $this->input->get('search');/** search value for datatable * */
$offset = $this->input->get('start');/** offset value * */
$limit = $this->input->get('length');/** limits for datatable (show entries) * */
$order = $this->input->get('order');/** order by (column sorted ) * */
$column = array('id', 'manufacturer');/** set your data base column name here for sorting* */
$orderColumn = isset($order[0]['column']) ? $column[$order[0]['column']] : 'parameter';
$orderDirection = isset($order[0]['dir']) ? $order[0]['dir'] : 'asc';
$ordrBy = $orderColumn . " " . $orderDirection;
if (isset($search['value']) && !empty($search['value'])) {
/** creat sql or call Model * */
/** I am calling sql directly in controller for your answer
* Please change your sql according to your table name
* */
$sql = "SELECT * FROM TABLE_NAME WHERE column_name '%like%'" . $search['value'] . " order by " . $ordrBy . " limit $offset,$limit";
$sql = "SELECT count(*) FROM TABLE_NAME WHERE column_name '%like%'" . $search['value'] . " order by " . $ordrBy;
$result = $this->db->query($sql);
$result2 = $this->db->query($sql2);
$count = $result2->num_rows();
} else {
/**
* If no seach value avaible in datatable
*/
$sql = "SELECT * FROM TABLE_NAME order by " . $ordrBy . " limit $offset,$limit";
$sql2 = "SELECT * FROM TABLE_NAME order by " . $ordrBy;
$result = $this->db->query($sql);
$result2 = $this->db->query($sql2);
$count = $result2->num_rows();
}
/** create data to display in dataTable as you want **/
$data = array();
if (!empty($result->result())) {
foreach ($result->result() as $k => $v) {
$data[] = array(
'id' => $v['id'],
'manufacturer'=>$v['manufacturer'],
'actions' => "<a href=''><strong>Edit</strong></a>"
);
}
}
/**
* draw,recordTotal,recordsFiltered is required for pagination and info.
*/
$results = array(
"draw" => $this->input->get('draw'),
"recordsTotal" => count($data),
"recordsFiltered" => $count,
"data" => $data
);
echo json_encode($results);
} else {
/** this will load by default with no data for datatable
* we will load data in table through datatable ajax call
*/
$this->load->view('../template/header');
$this->load->view('manufacturer',$data);
$this->load->view('../template/footer');
}
}else{
redirect('main/restricted');
}
}
答案 0 :(得分:0)
解决方案是删除空格。
function palindromeCheck(string) {
string = string.replace(/\s+/g, '');
const check = string.trim().split('').reverse().join('');
return string === check;
}
答案 1 :(得分:0)
这非常低效。 SO上有大约一百个回文解决方案,您可以轻松搜索,但仅供参考:
function palindrome(s) {
for (var i = 0, j = s.length-1; i < j; i++, j--) {
if (!/\w/.test(s[i])) i++;
else if (!/\w/.test(s[j])) j--;
else if (s[i].toLowerCase() !== s[j].toLowerCase()) return false;
}
return true;
}