Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z preg_replace
smaru
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 19.01.2004
Skąd: Skierniewice

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


Mam bazę w MySQL'u, niestety dane w niej zawarte nie mają polskich znaczków. Spowodowane to jest błędnym importem z plików dbf. Ale nie o to chodzi. Mam do tej bazy wyszukiwarkę i aby poprawnie wyszukiwać dane wpisywane z polskimi znakami musiałem napisać funkcje (całkiem prostą), która będzie to zapewniała. Wygląda tak:

[php:1:f2013674e4]<?php
function replace($string){
$patterns[0] = "/ł/";
$patterns[1] = "/ń/";
$patterns[2] = "/ó/";
$patterns[3] = "/ż/";
$patterns[4] = "/ę/";
$patterns[5] = "/ć/";

$replacements[5] = "%";
$replacements[4] = "%";
$replacements[3] = "%";
$replacements[2] = "%";
$replacements[1] = "%";
$replacements[0] = "%";

return preg_replace($patterns, $replacements, $string);
}
?>[/php:1:f2013674e4]

Wszystko jest cacy do momentu kiedy pojawia się imię Władysław. Funkcja ta w niewyjaśniony dla mnie sposób zamienia tego stringa na: W-ys%aw a nie W%adys%aw. Po mału dostaje już hopla więc się zlitujcie i pomóżcie 8O

Dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
BzikOS
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


Do prostych podmian nie trzeba zaprzątać aż RegExpów, wystarczy str_replace:

[php:1:c387f9138d]<?php
echo replace( 'Władysław' );

function replace( $string )
{
$pattern = Array ( 'ł', 'ń', 'ó', 'ż', 'ę', 'ć' );
$replacements = Array( '%', '%', '%', '%', '%', '%' );

return str_replace($pattern, $replacements, $string);
}
?>[/php:1:c387f9138d]
Go to the top of the page
+Quote Post
Lucky
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 2.03.2004
Skąd: Ziemia Giżycka

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


Sprawdziłem ten kod u siebie i wszystko działa w porządku, nie wiem w czym jest problem (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Pozatym w ten sposób działa jednakowo dobrze:
[php:1:24d649e4ba]<?php
function replace($string){
$patterns[0] = "/ł/";
$patterns[1] = "/ń/";
$patterns[2] = "/ó/";
$patterns[3] = "/ż/";
$patterns[4] = "/ę/";
$patterns[5] = "/ć/";

return preg_replace($patterns, '%', $string);
}
?>[/php:1:24d649e4ba]
Go to the top of the page
+Quote Post

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: 23.08.2025 - 19:36