Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] iconv - rozny wynik na roznych serwerach
Agape
post
Post #1





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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.

Ten post edytował KsaR 24.09.2015, 16:41:44


--------------------
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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


Ten post edytował Tomplus 24.09.2015, 19:32:21
Go to the top of the page
+Quote Post
Agape
post
Post #4





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


@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 ?


--------------------
Go to the top of the page
+Quote Post
luki100011
post
Post #5





Grupa: Zarejestrowani
Postów: 243
Pomógł: 20
Dołączył: 20.04.2004
Skąd: Wielkopolska

Ostrzeżenie: (0%)
-----


Użyj może gotowego rozwiązania - dla wielu języków

https://github.com/cocur/slugify


--------------------
Go to the top of the page
+Quote Post
Tomplus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 21:04