substr не режит строку
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



substr не режит строку Expand / Collapse
Автор
Сообщение
31.08.2006 12:09
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.10.2007 17:42
Сообщ.: 133, Visits: 1 166
substr не режит строку токого вида:

http://www.google.com/searchhl=uk&q=%D0%A5%D0%B0%D0%B2%D1%80%D1%83%D0%BA+%D0%9C%D0%B0%D1%80%D0%B8%D1%8F&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA+%D1%83&wef

Тоесть он как-бы режит её на там где идут нормальные символы

substr($str, 0, 5) - OK (http:)

а если

substr($str, 0, 200) - То получается выводит всю строку целиком, как-бы считая эти спец символы (наверное юникод) пустыми...

Как быть? Мне надо что-бы строка резалась хотябы на половине этих спец символов (для вида)... Может есть альтернативы?

Сообщ. #903658
31.08.2006 12:14
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
У тебя на входе строка длиной 156 символов, ты просишь substr вернуть тебе первые 200 символов и удивляешься почему возвращается строка целиком. Где логика?
Сообщ. #903660
31.08.2006 12:44


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.03.2008 15:26
Сообщ.: 701, Visits: 7 028
Он похоже %D0 за три символа посчитал :)))))
Сообщ. #903665
31.08.2006 12:46
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.10.2007 17:42
Сообщ.: 133, Visits: 1 166
Все правильно сабстр - работал просто я вывалился чего такие строки получаются здоровые...)))

- а с этой кодировкой ничё поделать нельзя?

Точнее как раскодировать я знаю ну например этот УТФ8 в рус перегнать...

а вот как узнать какая кодировка наверное не реально?

Сообщ. #903667
31.08.2006 12:47
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Ок. В чем тогда проблема? Код

<?php
$str = "http://www.google.com.ua/searchq=%D0% ... &hl=ru&lr=&inlang=ru&start=10&sa=N";
echo substr($str, 0, 200);
?>

возвращает ровно 200 первых символов.

Сообщ. #903668
31.08.2006 12:49
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Silver (31.08.2006)
Он похоже %D0 за три символа посчитал :)))))

В данном случае это и есть три символа.

Сообщ. #903669
31.08.2006 12:51
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.10.2007 17:42
Сообщ.: 133, Visits: 1 166
см.выше...плиз
Сообщ. #903670
31.08.2006 12:55
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.10.2007 17:42
Сообщ.: 133, Visits: 1 166
Silver (31.08.2006)
Он похоже %D0 за три символа посчитал :)))))

Ваще-то он считает его как за 1 символ... потому что выводит

длинную строку в кодировке этой....

Сообщ. #903671
31.08.2006 12:59
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
ChiEF (31.08.2006)
а вот как узнать какая кодировка наверное не реально?

В строке запроса Google иногда передается параметр кооторый указывает на кодировку текста запроса и можно ее использовать. В данном случае такого параметра нет, а значит узнать кодировку можно только методом угадывания. Каждую кодировку можно охарактеризовать своей таблицей частоты повторения символов. Считаем частоту повторения симолов в исходном тексте и сравниваем данные с информацией из оригиналньых таблиц. Какая из них подходит ближе, та и является лучшим кандидатом. Хочу подчеркнуть, что не определение кодировки, а ее угадывание. В MSIE тоже есть режим автоподбора кодировки и он далеко не всегда правильно определяет koi8-r это или windows-1251.

Сообщ. #903672