Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Od czego zależy "kodowanie znaków" w preg_replace?
Forum PHP.pl > Forum > PHP
sowiq
Mam problem, który nie wiem z czego wynika. Tzn wiem, że z jakiejś opcji konfiguracyjnej serwera, ale nigdy wcześniej nie spotkałem się, żeby preg_replace działał różnie na różnych serwerach. Pokażę to na przykładzie:

  1. $str = 'köşeçarşı'; // turecki wyraz :)
  2.  
  3. $cleanedStr = preg_replace('/\W/u', ' ', $str);
  4. var_dump($cleanedStr);
  5.  
  6. // wynik na moim lokalnym serwerze:
  7. string(14) "köşeçarşı"
  8.  
  9. // wynik na produkcji:
  10. string(9) "k e ar "


Jednym słowem, serwer produkcyjny uznaje tureckie znaki specjalne za znaki spoza zakresu liter.

Gdzie może leżeć przyczyna?
werdan
Sprawdz czy PHP jest zainstalowane z PCRE_UTF8 (to te /u).

http://stackoverflow.com/questions/1958840...-on-cli-and-via

ogolnie jak wpiszesz "PCRE_UTF8" w google, to otrzymasz pare ciekawych watków.
sowiq
Dzięki za odpowiedź, trochę mnie naprowadziła!

Znalazłem dwie rzeczy na serwerze produkcyjnym (tam, gdzie nie działa) i wszystko wygląda OK:

Kod
$ pcretest -C
PCRE version 7.8 2008-09-05
Compiled with
  UTF-8 support
  Unicode properties support
  [...]


Z phpinfo:
Kod
Compiled with: [...] '--with-pcre-regex=/usr' [...]


Poza tym wersja PCRE z phpinfo pokrywa się z tą z "pcretest -C".

[edit]
Dodam, że w moim przypadku PHP nie wyrzuca żadnych błędów/warningów (jak to niektórzy opisują na forach). Po prostu zwraca inny wynik niż bym się spodziewał.
pyro
Jakie są wersje PHP na obu serwerach?
sowiq
Localhost (Windows 7):
Kod
$ php -v
PHP 5.4.19 (cli) (built: Aug 21 2013 01:12:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies


Produkcja (Red Hat Enterprise Linux Server release 6.4 (Santiago)):
Kod
$ php -v
PHP 5.3.3 (cli) (built: Jul 12 2013 04:36:18)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with the ionCube PHP Loader v4.0.14, Copyright (c) 2002-2011, by ionCube Ltd.
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.