Forum Webscript.Ru
Программирование => PHP => Тема начата: Matold от 09 Ноября 2005, 01:19:09
-
Здравстуйте!
У меня при импорте русского текста из excela в базу пишется
опис4
- такая строка. А я хочу перед самим импортом заменить эту строку на нормальные русские символы. На php.net я чет не разобрался с ф-иями, там самодельные примеры, но они не работают у меня (похоже применяю не правильно (( ) Вообщем если кто-то похожее делал - напишите пример плиз, как это возможно осуществить....
Заранее спасибо за вашу помощь!!!
-
Плохо искал ;)
http://ru.php.net/html_entity_decode
$text="опис4";
print (html_entity_decode($text));
?>
И получи свою опис4
-
Так фишка в том, что если посмотреть страницу в виде html - то опис4 - такая фигня не изменится на русские символы. С выводом на экран пользователю проблем нету. Проблема в том например, что когда в базе хранятся вместо русских символов xxxyyyy, то поиск не будет работать.
-
Вот тут есть по теме :) Разбирайюсь сейчас (http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings2&v=1c8a)
-
Matold:
то поиск не будет работать
будет, если искать не "опис4", а опис4
-
Ок :) Поиск будет работать, но не так, как хотелось бы :)
Может кто насчет регулярных выражений поможет:
//ЗАМЕНЯЕТ опис4 на опис4
function Unicode2Charset($str, $charset = \'Windows-1251\') {
return preg_replace(
\'~(?:x([\\da-f]+)|(\\d+));~ie\',
\'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))\',
$str
);
}
А как изменить регулярное выражение, чтобы оно заменяло
опис4 на опис4?
(во втором случае символы не разделены ; )
Просто когда меняю регулярное выражение на то, что в FAQ (http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings2&v=1c8a) дописано - возвращает пустую строку.
-
Спецификация требует разделения через ";"
Обработай строку с заменой
на
;
-
Точно :) Я тоже уже решил так сделать... Спасибо за помощь!
-
Только в начале не забудь удалить ";"
-
Вот, может кому-нить еще пригодится :)
$ret = \'\';
for( $i=0; $i $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
$ret .= \'\'.$charcode;
}
return HTMLtoKOI($ret);
}
function HTMLtoKOI($str){
$str = preg_replace(\'~(\\d+)~se\',\'html_entity_decode("$0".";",ENT_QUOTES,"CP1251")\',$str);
$str = str_replace(";","",$str);
$str = preg_replace(\'~(\\d+)~se\',\'\\\\1>1103 ? "\\\\0;" : (\\\\1>848 ? chr(\\\\1-848) : chr(\\\\1))\',$str);
return trim($str);
} ?>
-
Напиши статейку и опубликуй :)
А то поиском мало кто пользуется