preg_replace, ereg_replace - проблема с немецкими умляутами

horal

Новичок
preg_replace, ereg_replace - проблема с немецкими умляутами

День добрый! есть такая пролема:
если в спроке есть немецкие символы a,o,u с двумя точками, то после применнеия функции ан выходе приходит ????

$string = "April 15, 2003 äöüë ";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
echo preg_replace($pattern, $replacement, $string);

это простой пример с хелпа.

как сделать, чтобы после парсинга, было видны символы как есть?
 

horal

Новичок
походу нет
i..e must be smth like that:

$find = array("/Ä/","/ä/","/Ö/","/ö/","/Ü/","/ü/","/ß/");
$replace = array(chr(128),chr(138),chr(133),chr(154),chr(134),chr(159),chr(167));
$exportstring = preg_replace($find,$replace,$exportstring);

-~{}~ 08.02.07 19:11:

setlocale(LC_ALL,"de_DE");
$num = '4';
$string = "This string has four words. ö ü ";
$string = ereg_replace('four', $num, $string);

echo $string;

не работает

-~{}~ 08.02.07 19:14:

ТАК ВОТ тоже не работает...

echo $string;
$string = iconv("ISO-8859-1", "UTF-8", "This is a test. ö ü ");
echo $string;

-~{}~ 09.02.07 12:26:

Автор оригинала: horal
походу нет
i..e must be smth like that:

$find = array("/Ä/","/ä/","/Ö/","/ö/","/Ü/","/ü/","/ß/");
$replace = array(chr(128),chr(138),chr(133),chr(154),chr(134),chr(159),chr(167));
$exportstring = preg_replace($find,$replace,$exportstring);

-~{}~ 08.02.07 19:11:

setlocale(LC_ALL,"de_DE");
$num = '4';
$string = "This string has four words. ö ü ";
$string = ereg_replace('four', $num, $string);

echo $string;

не работает

-~{}~ 08.02.07 19:14:

ТАК ВОТ тоже не работает...

echo $string;
$string = iconv("ISO-8859-1", "UTF-8", "This is a test. ö ü ");
echo $string;
А РЕШЕНИе оказалось как всегда простым:

function convert_text($str)
{
$out = '';

for ($i = 0; $i<strlen($str);$i++)
{
$ch = ord($str{$i});
switch($ch)
{
case 252: $out .= "&uuml;" ;break; // chr(129);break; //u Umlaut
case 220: $out .= "&Uuml;"; break; //chr(154);break;//U Umlaut
case 228: $out .= "&auml;" ; break;// chr(132);break;//a Umlaut
case 196: $out .= "&Auml;" ; break;//chr(142);break;//A Umlaut
case 214: $out .= "&Ouml;" ; break;//chr(153);break;//O Umlaut
case 246: $out .= "&ouml;" ; break;//chr(148);break;//o Umlaug
case 223: $out .= "&szlig;" ;break;//chr(225);break;//SZ
default : $out .= chr($ch) ;
}
}
return $out;
}

вот так вот. Пользуйтесь на здоровье!
 

horal

Новичок
он поддерживается не ОЧЕНЬ немногих хостингах к сожалению
 

phprus

Moderator
Команда форума
horal
Можно использовать кодировку utf-8 и preg_* в регулярных выражениях которых указан модификатор u
 
Сверху