Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: htmlentities($str); Это как так? Эт где?
 
 автор: SeKo   (18.09.2004 в 15:02)   письмо автору
 
 

Привет народ,

посмотрел, что постеры сдесь компетентные а я запарился с одной проблемкой. Надеюсь что поможете. Меня мучает вопрос насчёт - htmlentities(); -

Как оно точно работет? Дело в том, что у нас есть страничка
http://www.kraft-reisen.de, и там есть два входа (две версии), русский и немецкий. Проблема в гостевухе - она должна быть одна и надобно, чтобы писать в ней можно было и по русски и по немецки.
Через "charset" я установил пока немецкий, но как я понимаю, комбинации русский + немецкий не существует. Поэтому я думал установить руссий "charset " и перевернуть через PHP немецкие буквы - такие как "öäüß", чтобы те были преобразованы в нормальный для этого языка вид. (пока при русской кодировке броузер показывает "цдьЯ").
Я нашёл функцию htmlentities(), и думаю что с ней как-то должно получится - но как точно я не знаю.

Заранее благодарен за помощ

Сергей

   
 
 автор: cheops   (18.09.2004 в 15:56)   письмо автору
 
   для: SeKo   (18.09.2004 в 15:02)
 

htmlspecialchars() и htmlentities() всегда вам будут бить симоволы вида &#246, так & заменяется & Вообще говоря странно, что у вас такая проблема с кодировками - у меня ваши пример на локальном сервер прекрасно выводил немецкие умлауты вместе с русским текстом (полсе того, как я закомментировал строку с htmlspecialchars() - может и не стоит их пре).
Вы так же можете поиграться с функций библиотеки iconv - позволящих переводить текст из одной кодировки в дургую.

PS Лучше в следующий раз такой большой код прикреплять в виде файла :)))
PPS А может проще поступить, просто перед вызовом htmlspecialchars() заменить символы на их немецкие эквиваленты:
<?php
    $simbols 
= array("&#252;","&#246;","&#228;"); 
    
$de = array("uoa"); // Ну здесь подставить умлауты соотвествующие
    
$text str_replace($simbols,$de,$text); 
?>


http://www.softtime.ru/group/id_group=11

   
 
 автор: SeKo   (18.09.2004 в 16:33)   письмо автору
 
   для: cheops   (18.09.2004 в 15:56)
 

Приветик,

>ваш пример на локальном сервере прекрасно выводил немецкие

Как? где? А в гостевуху заглядывали?

>умлауты вместе с русским текстом (полсе того, как я
>закомментировал строку с htmlspecialchars() - может и не
>стоит их пре).


эм ... не понял

http://www.kraft-reisen.de/gaestebuch/guestbook.php

Я сейчас поставил на русский чарсет, вместо Gaestebuch (на а умлаут), стоит Gдstebuch.


>Вы так же можете поиграться с функций библиотеки iconv -
>позволящих переводить текст из одной кодировки в дургую.


угу

>PS Лучше в следующий раз такой большой код прикреплять в
>виде файла :)))


да, извеняюсь не подрасчитал. В нотепаде вроде таким маленьким казался :-).

>PPS А может проще поступить, просто перед вызовом
>htmlspecialchars() заменить символы на их немецкие
>эквиваленты:


в смысле сначала htmlspecialchars() функцию а потом ваш код? :

>
<?php
>    $simbols = array("&#252;","&#246;","&#228;"); 
>    
$de = array("uoa"); // Ну здесь подставить умлауты
>соотвествующие
>    $text str_replace($simbols,$de,$text); 
>
?>



а как должна гласить togda htmlspecialchars()?
и куда ж её писать?

Извеняюсь за глупость. :-)

Sergej

   
 
 автор: cheops   (18.09.2004 в 16:56)   письмо автору
 
   для: SeKo   (18.09.2004 в 16:33)
 

>Как? где? А в гостевуху заглядывали?
Нет, просто запустил приведённый вами код на локальном сервере дома.
>эм ... не понял
Просто если убрать htmlspecialchars() в строке 459 - немецкие буквы начинают отображаться по нормальному (на моём сервере, что в общем не значит, что у вас будет тоже самое).
>в смысле сначала htmlspecialchars() функцию а потом
>ваш код? :
Нет, этот код обязательно нужно выводить до вызова функции htmlspecialchars():
<?php
   $simbols 
= array("&#252;","&#246;","&#228;"); 
   
$de = array("uoa"); // Ну здесь подставить умлауты соотвествующие
    
$text str_replace($simbols,$de,$text); 
    
$text htmlspecialchars(stripslashes($text)); 
?>

Если вы хотите вызывать его после, тогда следует использовать вариант:
<?php
    $text 
htmlspecialchars(stripslashes($text)); 
   
$simbols = array("&amp;#252;","&amp;#246;","&amp;#228;"); 
   
$de = array("uoa"); // Ну здесь подставить умлауты соотвествующие
    
$text str_replace($simbols,$de,$text); 
?>

   
 
 автор: cheops   (18.09.2004 в 17:01)   письмо автору
 
   для: cheops   (18.09.2004 в 16:56)
 

Т.е. осуществлять преобразование в 459 строке, непосредственно перед выводом сообщение на страницу.

   
 
 автор: SeKo   (18.09.2004 в 17:08)   письмо автору
 
   для: cheops   (18.09.2004 в 17:01)
 

WOW !

с ума сойти. Вот это голова. В такой короткий срок разобраться в чужом коде... уважаю. Мне бы этот уровень. класс.

Спасибо огромное, cheops.!

Всё работает. (кроме моей головы :-( .)

Сергей

   
 
 автор: SeKo   (18.09.2004 в 17:14)   письмо автору
 
   для: cheops   (18.09.2004 в 15:56)
 

>умлауты вместе с русским текстом (полсе того, как я
>закомментировал строку с htmlspecialchars() - может и не
>стоит их пре).

да, мне надо поработать над русской лексикой программиста. :-)
В этом комменте было всё предельно ясно сказано.

Спасибо ещё раз.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования