zmenit kodovanie (diakritiku) v PHP

Programovacie jazyky, rady, poradňa...
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

zmenit kodovanie (diakritiku) v PHP

Príspevok od používateľa DeeJay3 »

cawte potrebujem poradit s tymto kodom:

Kód: Vybrať všetko

<?php 
$vyrazy = array( 
'popis1' => '1slovo s diakritikou', 
'popis2' => '2slovo s diakritikou', 

); 

$pole = array(); 

if (!empty($_GET["q"])) { 
  foreach ($vyrazy as $vyraz_file => $vyraz_name) { 
    $search =  stripos($vyraz_name, $_GET["q"]); 
    if ($search === false) continue; 
    else $pole[] = "<font size='2'>- ".$vyraz_name."</font> - <i>".$vyraz_file. "</i><br />";  
  } 

  if (count($pole)>0) {  
     echo "Počet možných hľadaných výrazov: ".count($pole);
   foreach($pole as $key=>$value) echo $value; 
   } 
  else {
  echo "Nenašiel som žiadne možné výsledky";} 
} 
else { 
  echo "Do poľa pre vyhľadávanie nebol zadaný žiadny výraz."; 
} 

?>
potreboval by som aby sa retazce s diakritikou ktore bude prehladavat previedli do ASCII kodu nasiel som na nete ze to ide pomocou tohto

Kód: Vybrať všetko

<?
setlocale(LC_CTYPE, "sk_SK.utf-8");
$text = iconv('UTF-8', 'ASCII//TRANSLIT', $text);
?>
prikazu ale bude to neviem dat na spravne miesto alebo mi to nejde...alebo by to slo ces str_replace()??.....dikes
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Prosim ťa a načo to vlastne potrebuješ ? čo cheš tým vlastne dosiahnuť ? nieje lepšie mať stranku v UTF a tak sa bude krasne zobrazovat každému ako ma ?

skontroluj si na tej uloženej stranke, či tam nemas BOOM :) a ak hej tak ho odstran možno pomôže
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Osobne by som to najprv skúsil uložiť ako utf-8. Pozri si na nete ako sa to v tvojom editore robí, keďže si nenapísal v čom to píšeš. Bom (nie boom) určite nemusíš odstraňovať, lebo ak tam je, znamená to že to nemáš v unicode ale už v utf.
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

audiotrack napísal:Osobne by som to najprv skúsil uložiť ako utf-8. Pozri si na nete ako sa to v tvojom editore robí, keďže si nenapísal v čom to píšeš. Bom (nie boom) určite nemusíš odstraňovať, lebo ak tam je, znamená to že to nemáš v unicode ale už v utf.
to je len preklep :) .. ale stale neviem kôli čomu to chce dat do ASCII
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

lebo to porovnáva s get parametrom, a cez get sa text neprenáša v utf-8. Tým pádom chce porovnať utf8 výrazy s tým čo mu prišlo, no to je v unicode. Ak by ho len vypisoval, tak by mu nevadilo že tam budú niektoré znaky nahradené htmlentitami. Problém to môže byť pri jeho porovnávaní s iným reťazcom ktorý obsahuje diakritiku. Ak to chce posielať ako utf8, musí do formulára pridať accept-charset="UTF-8" čo však nefunguje v IE alebo druhou možnosťou je uložiť formulár (a teda celý html súbor) ako utf8. To je práve riešenie ktoré sa mi zdá lepšie ako konvertovať tie utf8 reťazce na niečo iné
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

alebo odstanit diakritiku zo zaslaných retazcov a tak nasledne upravený retazec porovnavat a vyhladavat... sice najde viacej možnosti zrejme ale je to tiež jeden z postupov :)

Kód: Vybrať všetko

StrTr($str, 'áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ', 'aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ')
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

diakritika je ale v slovenčine dosť dôležitá, lebo ak ju odstrániš, nemusíš nájsť to čo hladáš. Príkladom by mohlo byť slovo "zastavka" z ktorého nevieš či sme chceli slovo zástavka (vlajka) alebo zastávka (autobusová). Takýchto príkladov by sa dalo nájsť vela. Čiže ako riešenie by som to nepovažoval
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

Príspevok od používateľa DeeJay3 »

ja vlastne chcem aby ked zadam do vyhladavania slovo bez diaktitiky prehladalo aj slova s diakritikou...skusal som to ces replace ale ked som zapisal aby mi nahradzovalo slova s diakritikou na bezdiaktitiky a tak hladalo aj tieto, tak mi ich vypisalo ......super aaaale bez diakritiky...a to nechcem...ja potrebujem prekodit iba ten hladany retazec nie stranku...zadam aby mi vyhladalo slovo sialeny a ono mi vyhodi ako vysledok slovo šialený aj slova s diakritikou prehladalo (ktore v kode bude mat priradeny nejaky obsah) pretoze slovo sialeny v slovencine neexistuje....neexistuje nieco take ako napr pred search vlozit replace 'áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ', 'aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ' a potom za nim replace spet tak ake boli na zaciatku ??
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

tak si vytvor funkcia ktora bude hmm "indexovat" data v DB priklad:

v db mas riadok
1. šialený .....

ten si ulož to nejakého pola a slovo ktore porovnavas pomocou mojej funkcie co som ti hore napisal uloz bez diakrityky:
$indexovany['1'] = $hodnota_z_DB_Bez_Diakri;

toto spravis pre celu DB a potom uz len ti stači zobrat tvoje slovo ktore si zadal ,odstranit aj z neho diakrit. a prejst takto vytvorene pole v nejakom cykle a porovnavat ho či sa nenajde nejaká zhoda a ak ano tak si zoberieš index zhodneho pola a pomocou nej si vytiahnut z DB požadovanu hodnotu
Napísať odpoveď