ugrás a tartalomhoz

Ékezetes karakterek cseréje

Don Oden · 2010. Jan. 11. (H), 21.55
Sziasztok!
Fura dolgot észleltem miközben egy felhasználóbarát url-t szerettem volna készíteni egyik oldalamon.

Készítettem egy függvényt, ami átalakítja kiszedi a kódból a speciális kaarktereket, és a szóközök helyére egyedi elkülőnítő karaktert tesz. Tökéletesen működik az a része, viszont az ékezetes karaktereket az istenért sem akarja lecserélni php 4.0.3-at futtató szerveren.
$accents = array(
            'á' => 'a', 'Á' => 'A',
            'ä' => 'a', 'Ä' => 'A',
           
            'é' => 'e', 'É' => 'E',
           
            'í' => 'i', 'Í' => 'I',
           
            'ó' => 'o', 'Ó' => 'O',
            'ö' => 'o', 'Ö' => 'O',
            'ő' => 'o', 'Ő' => 'O',
           
            'ú' => 'u', 'Ú' => 'U',
            'ü' => 'u', 'Ü' => 'U',
            'ű' => 'u', 'Ű' => 'U'
    );
   
    foreach ($accents as $key => $val)
    {
        $str = preg_replace('#'.$key.'#', $val, $str);
    }


így néz ki a kód. A lényege az egésznek, hogy tökéletesen működik php 5 alatt, egy újabb verziójú php 4 alatt is, amit itthoni gépre tettem fel, azon a szerveren viszont az istenért sem akar futni. Kíváncsi vagyok tudtok-e valami jó tanácsot mondani ezzel kapcsolatban, amit már előre meg is köszönnék :)
 
1

Szerk

Don Oden · 2010. Jan. 11. (H), 21.59
4.3.10-22 a verziószáma a szervernek.
Ja és ha valakinek van véleménye, tapasztalata webtar.hu hoszting szolgáltatásával kapcsoaltosan és kifejtené annak is örülnék.
2

Próbáld ki ezt: $str =

deejayy · 2010. Jan. 12. (K), 09.45
Próbáld ki ezt:

$str = strtr(strip_tags(iconv('utf-8', 'latin2', $str)), "éáíüúűőöóÉÁÍÜÚŰÓÖŐ ", "eaiuuuoooEAIUUUOOO.");
3

Vagy ezt

Gixx · 2010. Jan. 12. (K), 17.10

$CHARMAP = array(
  'ö' => 'o',
  'Ö' => 'O',
  'ó' => 'o',
  'Ó' => 'O',
  'ő' => 'o',
  'Ő' => 'O',
  'ú' => 'u',
  'Ú' => 'U',
  'ű' => 'u',
  'Ű' => 'U',
  'ü' => 'u',
  'Ü' => 'U',
  'á' => 'a',
  'Á' => 'A',
  'é' => 'e',
  'É' => 'E',
  'í' => 'i',
  'Í' => 'I',
);

$string = strtr($string, $CHARMAP);

// minden más karakter
$string = preg_replace('/[^a-zA-Z0-9]/','_',$string);

ha viszont maradsz az iconv-nál, akkor javaslom, hogy a következőképp alakuljanak a paraméterek:

$string = iconv('UTF-8','ISO-8859-2//TRANSLIT',$string);
4

meg van a hiba, köszi

Don Oden · 2010. Jan. 13. (Sze), 01.58
Megtaláltam! :) az egyes fájlok kódlapjai eltértek, és mivel myisam az adatbzis nem ad vissza kódkészletet sem, miután mindent utf8-ra állítottam működött tökéletesen!

Azért köszönöm a segítségeteket!
Rendes volt tőletek :)

Most legalább van egy sokadik topic amiben megjelenik ez az apróság :D