Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno odebrání diakritiky v php

Jak nejlépe odebrat diakritiku?
zkusil jsem

 $string = iconv("utf-8", "ASCII//TRANSLIT", $string);

ovšem u zkušebního texu "Příliš žluťoučký kůň...." mi to změnilo na text co v sobě měl '

co dělám?
vytvářím složky dle zadání uživatele a potřebuji odebrat diakritiku

Předmět Autor Datum
$text = "příliš žluťoučký kůň úpěl ďábelské ódy"; $textBezDiakritiky = StrTr($text, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤ…
Flash_Gordon 28.01.2012 01:08
Flash_Gordon
tak tomuto jsem se právě chtěl vyhnout ;) ... vše si musím definovat... a co když mi příjde slovák a…
tomas.kulhanek 28.01.2012 01:19
tomas.kulhanek
Tak zkus toto: $input = 'räksmörgås och köttbullar'; // UTF8 encoded $input = iconv('UTF8', 'ASCII/…
Flash_Gordon 28.01.2012 01:22
Flash_Gordon
Taky jsem před časem bádal a taky nenašel elegantní způsob. Používám tyhle funkce : ( už si nepamatu… poslední
hynajs 28.01.2012 10:51
hynajs
$text = "příliš žluťoučký kůň úpěl ďábelské ódy";
$textBezDiakritiky = StrTr($text, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz");

//editace

Dělat na projektu v pátek v jednu hodinu v noci je dobrý předpoklad.

Taky jsem před časem bádal a taky nenašel elegantní způsob.
Používám tyhle funkce :
( už si nepamatuji, co jsem ukradl z inetu a co doplnil )
( ty české znaky má Squad leader líp a přehledněji )
( slovenské a jiné znaky je nutné doplnit)

function pritulne_url($url) {
    $url = zrus_cestinu( $url ) ;
    $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url);
    $url = trim($url, "-");
    $url = iconv("utf-8", "us-ascii//TRANSLIT", $url);
    $url = strtolower($url);
    $url = preg_replace('~[^-a-z0-9_]+~', '', $url);
    return $url;
}

function ceske_znaky() {
    $ceske=array("ž","Ž","ř","Ř","š","Š","č","Č","ň","Ň","á","é","í","ó","ú","ů","Á","É","Í","Ó","Ú","Ů","ý","Ý","ě","Ě","Ď","ď","Ť","ť") ;
  $nahra=array("z","Z","r","R","s","S","c","C","n","N","a","e","i","o","u","u","A","E","I","O","U","U","y","Y","e","E","D","d","T","t") ;

  return array($ceske,$nahra) ;  
}

function zrus_cestinu($retez) {
  $ceske_znaky=ceske_znaky() ;
  $ceske=$ceske_znaky[0] ;
  $nahra=$ceske_znaky[1] ;
  return str_replace($ceske,$nahra,$retez) ;
}

Zpět do poradny Odpovědět na původní otázku Nahoru