Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_replace() Polskie znaki.
ZaXaZ
post
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


mam taki preg:
  1. preg_replace("/[^0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ_\-]/", "", $input);


próbuje zamienić wszystko poza a-Z (z polskimi) oraz _ - na nic, jednak wyskakuje błąd jak próbowałem dodać znaki Polskie, jak to naprawić?

ps. błąd taki:
Kod
<br />
<b>Fatal error</b>:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=''

Baza jest w utf8. (utf8_polish_ci)

Ten post edytował ZaXaZ 2.07.2014, 21:28:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Będziesz dodawać litery każdego alfabetu do tego wyrażenia? Przecież od tego mamy od lat Unicode (w PHP częściowe wsparcie od niemal 10) by z niego korzystać: http://php.net/manual/pl/regexp.reference.unicode.php
2. Błąd jest związany z bazą danych (PDO) i nie ma absolutnie nic wspólnego z PCRE.
3. latin1_swedish_ci oraz utf8_general_ci to systemy/sposoby porównania znaków, nie kodowania same w sobie - to bardziej uwaga do @Michael2318.
4. Powinieneś ustawić kodowanie dla połączenia z bazą na UTF-8. Możesz to zrobić natychmiast przy nawiązaniu połączenia z bazą:
  1. $pdo = new PDO('mysql:host=nazwaHosta;db_name=nazwaBazyDanych;charset=utf8', 'użytkownik', 'hasło');
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 09:17