Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проблема с simplexml_load_string и кириллицей


Автор: ramzes3 21.4.2009, 16:22
 Добрый день. Столкнулся с следующей проблемой. 
Если в качестве аргумента функции simplexml_load_string передавать аргумент в котором встречаются символы из кириллицы, она не работает. Как обойти данную проблему?

Автор: ramzes3 21.4.2009, 18:07
 Покопался, проблема не совсем в simplexml_load_string.
$url - rss поток.
Код

$url='http://blablabla&parametr=русский текст';
$a=@file_get_contents($url);


Так вот на выходе мы не получаем ничего (print_r($a)). Хотя, если просто ввести данный адрес в браузере, все получаем. 

Автор: IZ@TOP 21.4.2009, 18:20
Попробуйте так
Код

$url='http://blablabla&parametr=' . urlencode('русский текст');
$a=@file_get_contents($url);

Автор: ramzes3 21.4.2009, 18:25
IZ@TOP, не помогает. 

Автор: IZ@TOP 22.4.2009, 10:28
А в какой кодировке "русский текст"?

Автор: ramzes3 22.4.2009, 14:16
 Проставлял кодировку страницы 
Код

header('Content-Type: text/html; charset=cp1251'); 


и UTF-8, не помогает.


 Приведем пример, который, возможно прояснит ситуацию.
Код

http://www.google.com.ua/webhp?rlz=%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0


Браузер понимает и сам переводит параметр rlz, как политика. Так вот, нам нужна функция, которая из 'политика' сделает
%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0.


Автор: ramzes3 22.4.2009, 15:42
Проблема была в кодировке русского текста. Решил следующим образом:
 Перед тем, как применять функцию urlencode нужно перевести текст в UTF-8.
Код

$p=urlencode(iconv("CP1251", "UTF-8", "политика"));

А дальше, как и говорил IZ@TOP:
Код

$url='http://blablabla&parametr=' . $p;
$a=@file_get_contents($url);

 Так что, спасибо, IZ@TOP, проблема была в действительности в кодировке русского текста.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)