Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z preg_replace
Forum PHP.pl > Forum > PHP
smaru
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
BzikOS
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]
Lucky
Sprawdziłem ten kod u siebie i wszystko działa w porządku, nie wiem w czym jest problem 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]
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.