Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] iconv - rozny wynik na roznych serwerach
Forum PHP.pl > Forum > Przedszkole
Agape
Mam funkcje ktora zmienia mi nazwe na url:

  1. function makeUrl($str, $replace=array(), $delimiter='-') {
  2. if( !empty($replace) ) {
  3. $str = str_replace((array)$replace, ' ', $str);
  4. }
  5.  
  6. $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  7. $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
  8. $clean = strtolower(trim($clean, '-'));
  9. $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
  10.  
  11. return $clean;
  12. }


wrzucam wiec do niej slowo: "Casques & écouteurs" i otrzymuje takie odpowiedzi:
serwer1: casques-ecouteurs
serwer2: casques-couteurs
czyli w drugim usunal é a w pierwszym zamienil na e (prawidlowo). Ten sam plik, to samo kodowanie inne serwery. Teraz pytanie jak zrobic zeby funkcja dzialala tak samo na kazdym serwerze. Trzymam je na shared'ach wiec nie mam za duzo mozliwosci w konfiguracji.
KsaR
Nie uzywalem tej funkcji bo mi sie nie podobala biggrin.gif

Ale nie lepiej cos typu,

  1. $clean=str_replace(array('é'),array('e'),$clean);

W tablicach wrazie gdyby wiecej znakow.
Tomplus
Sprawdź jakie masz w ogóle kodowanie, bo może przesyłasz w innym kodowaniu string.
http://php.net/manual/en/function.mb-detect-encoding.php
Agape
@KsaR to że Ci się nie podoba, nie pomaga mi zbytnio wink.gif myslalem o zamianie przez str_repace, ale musze miec uniwersalna funkcje, bo teraz sa francuskie teksty, a niedlugo beda inne. Musialbym wypisac wszystkie znaki diakrytyczne wielu krajow, a jakbym o jednym zapomnial funkcja przestaje wtedy spelniac swoja role.

@Tomplus dzięki za wskazówkę, niestety w obu przypadkach kodowanie wykrywa jako UTF-8 :/
serwer 1:
  1. tekst: Casques & écouteurs
  2. Kodowanie: UTF-8
  3. wynik funkcji: casques-ecouteurs

serwer 2:
  1. tekst: Casques & écouteurs
  2. Kodowanie: UTF-8
  3. wynik funkcji: casques-couteurs

ten sam plik wrzucilem na oba serwery ... i co tu moze byc przyczyna ?
luki100011
Użyj może gotowego rozwiązania - dla wielu języków

https://github.com/cocur/slugify
Tomplus
Muszę sam przetestować ten skrypt.

A co do iconv sam miałem taki problem, i jednak efektem było błędne kodowanie. Plików i w bazie danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.