PHP - Speciális karakterek fordítása, hogyan?

PHP - Speciális karakterek fordítása, hogyan?
2011-06-16T08:48:05+02:00
2011-06-16T16:10:00+02:00
2022-11-22T05:05:35+01:00
Gogolak1
Van egy OpenCart alapú webáruházam a webshop.kocsarauto.hu

Az elején egyáltalán nem működött a magyar ékezetes karakterekre való keresés de ezt a system/library/request.php -ben az alábbi kódrészlet módosításával megoldódott:


<?php final class Request { public $get = array(); public $post = array(); public $cookie = array(); public $files = array(); public $server = array(); public function __construct() { $_GET = $this->clean($_GET); $_POST = $this->clean($_POST); $_COOKIE = $this->clean($_COOKIE); $_FILES = $this->clean($_FILES); $_SERVER = $this->clean($_SERVER); $this->get = $_GET; $this->post = $_POST; $this->cookie = $_COOKIE; $this->files = $_FILES; $this->server = $_SERVER; } public function clean($data) { if (is_array($data)) { foreach ($data as $key => $value) { unset($data[$key]); $data[$this->clean($key)] = $this->clean($value); } } else { // ***************************************************** // Az alábbi sort ceréltem: $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); // A következőre: $data = htmlentities($data, ENT_COMPAT, 'UTF-8'); // ***************************************************** } return $data; } } ?>

Így már szépen keres is minden karakterre de sajnos a azonnali keresési tippeket adó bővítmény: Very simple AJAX live search ennek ellenére is értelmezhetetlen karaktereket ad gyorstipp ként a keresendő szöveg beírása közben.

Az előzőleg fentiek szerint módosított kódrészletnek köszönhetően részben jól működik mert minden magyar és speciális karakterre azonnali helyes találatokat ad csak épen a kimenet formátuma nem megfelelő, és ez így elég olvashatatlan a falhasználó számára.



Hogyan lehet ezt a kimenetet valahogy "visszafordítani" hogy magyarul értelmezhető karakterek jelenjenek meg.
Gondolom valamilyen módon lehetséges, mert a shop motor ezt valahogy megoldja, mivel a termékek neveit már a terméklistákban meg az adatlapokon, már helyesen jeleníti meg. Mint ahogy az a mellékelt képen, vagy a http://webshop.kocsarauto.hu oldalra beírt szöveg esetén is látható.

én úgy gondolom hogy a Very simple AJAX live search bővítmény
kiírató echo részénél kellene valamit "buherálni" ezt szerintem meg a bővítmény működéséhez szükséges módosító kódrészlet a végén tartalmazza.



Open: catalog/controller/product/search.php Find: } ?> Add before: public function ajax() { // Contains results $data = array(); if( isset($this->request->get['keyword']) ) { // Parse all keywords to lowercase $keywords = strtolower( $this->request->get['keyword'] ); // Perform search only if we have some keywords if( strlen($keywords) >= 3 ) { $parts = explode( ' ', $keywords ); $add = ''; // Generating search foreach( $parts as $part ) { $add .= ' AND (LOWER(pd.name) LIKE "%' . $this->db->escape($part) . '%"'; $add .= ' OR LOWER(p.model) LIKE "%' . $this->db->escape($part) . '%")'; } $add = substr( $add, 4 ); $sql = 'SELECT pd.product_id, pd.name, p.model FROM ' . DB_PREFIX . 'product_description AS pd '; $sql .= 'LEFT JOIN ' . DB_PREFIX . 'product AS p ON p.product_id = pd.product_id '; $sql .= 'LEFT JOIN ' . DB_PREFIX . 'product_to_store AS p2s ON p2s.product_id = pd.product_id '; $sql .= 'WHERE ' . $add . ' AND p.status = 1 '; $sql .= 'AND pd.language_id = ' . (int)$this->config->get('config_language_id'); $sql .= ' AND p2s.store_id = ' . (int)$this->config->get('config_store_id'); $sql .= ' LIMIT 15'; $res = $this->db->query( $sql ); if( $res ) { $data = ( isset($res->rows) ) ? $res->rows : $res->row; // For the seo url stuff $this->load->model('tool/seo_url'); $basehref = HTTP_SERVER . 'index.php?route=product/product&keyword=' . $this->request->get['keyword'] . '&product_id='; foreach( $data as $key => $values ) { $data[$key] = array( 'name' => htmlspecialchars_decode($values['name'] . ' (' . $values['model'] . ')', ENT_QUOTES), 'href' => $this->model_tool_seo_url->rewrite($basehref . $values['product_id']) ); } } } } // ***************************************************** // Szerintem ennél a résznél kellene módosítani talán, de vajon mit? echo json_encode( $data ); }
// *****************************************************
Kérem bárki segítségét akinek bármilyen megoldás vagy tippje lenne a fentiekben leírt probléma megoldására.

Előre is minden válaszadónak köszönöm!

Gogolak
http://webshop.kocsarauto.hu
Mutasd a teljes hozzászólást!
Csatolt állomány

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd