[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Символы \ufffd
sprofxx
Парсю сайт, курлом тащу. В одной строке при разборе через substr пытаюсь выхватить русские символы, даже один например, но в переменную пишется символ: "\ufffd", если несколько прихватывать, то в перемешку с цифрами. Строку парсю вида даты: "23 апр 10:00". Страшные символы идут как то непонятно, например после буквы "а", если брать допустим несколько символов прихватывая подряд. Текст в кодировке UTF-8, mb_detect_encoding это подтверждает. iconv не помогает никак, да собственно и перекодировать то по идее не надо ниче. Как можно вылечить это и выкинуть непонятные символы?
Bazaroff
header('Content-Type: text/html; charset=utf-8');

function getPage( $url )
{

$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

$result = curl_exec($ch);
curl_close($ch);

return $result; //возвращаем полученную страницу
}

Попробуй так
bestxp
Это похоже на закодированный через json_encode текст
попробуй обратно в сущности отконвертировать
Zzepish
bestxp
шта???? это символ в формате utf8. Какой еще json?
sergeiss
Цитата (sprofxx @ 23.04.2014 - 01:18)
...через substr пытаюсь... Текст в кодировке UTF-8, mb_detect_encoding это подтверждает...

Возьми mb_substr()

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sprofxx
Не работают все предложенные варианты. Выдает такие символы все равно.

Цитата
Это похоже на закодированный через json_encode текст
попробуй обратно в сущности отконвертировать


В примере таким образом обозначается один взятый символ из строки, это не похоже как то на json.
sprofxx
В общем выяснил новое. Если из строки "23 апр 10:00" выполнять mb_substr($str, 3, 6), т.е. брать по два символа на букву, начиная с четвертой позиции, то в переменную вносятся три русские буквы правильно. strlen говорит что там 15 символов в этой строке. Как это привести в нормальный вид, чтобы работать по-нормальному функциями пхп для работы со строками (посимвольно)?
sprofxx
Короче, в utf-8 на русскую букву идет два символа, это нужно учитывать при разборе строк. Если брать один символ от буквы, то он будет выглядеть так, как я написал в вопросе, поэтому когда я брал три символа начиная с позиции буквы "а", то у меня бралась буква и крякозябра (два символа на букву, и один символ из второй буквы). Проблема решена.
AllesKlar
sprofxx
Тебе ж сказали
Цитата
Возьми mb_substr()


_____________
[продано копирайтерам]
sprofxx
Он также работает как и substr, выдает ровно те же результаты.
AllesKlar
Цитата (sprofxx @ 23.04.2014 - 23:10)
Он также работает как и substr, выдает ровно те же результаты.

Ну так им же не нужно прям так "в лоб".
Это штука более тонкая, у нее настройки есть.
http://de3.php.net/manual/ru/function.mb-substr.php - вот там описание, примеры, разбирай, что к чему.

_____________
[продано копирайтерам]
sergeiss
Цитата (sprofxx @ 23.04.2014 - 23:10)
Он также работает как и substr, выдает ровно те же результаты.

При такой невнимательности не получится из тебя программиста... Функции mb_* как раз работают с мультибайтыми кодировками.
Или будь внимательнее и пробуй то, что тебе говорят, или оставь программирование.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sprofxx
Спасибо, помогло smile.gif mb_substr($strdate, 3, 3, 'utf-8') - забрал три русские буквы.

Цитата
При такой невнимательности


Не надо обзываться, работаю много, с пхп не часто, некогда разглядывать квадратные скобки smile.gif Всем спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.