- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
function WikiExtractArticleUrl($str) { // Декодирование кирилицы из урла
ErrorsOff(); // отключаем вывод ошибок нашего обработчика, дабы iconv не сорил
try { // пытаемся с помощью iconv перекодировать кирилицу из утф8 в сп1251, подсунув декодированную кирилицу (из %12%%2D и т.д.)
$text = iconv('UTF-8', 'CP1251', rawurldecode($str));
throw new Exception(''); // создаем новое исключение, дабы похапэ отстал от нас
} catch(Exception $e) { // ловим ошибку iconv, типа перекодировать не надо
$text = urldecode($str); // тупо декодируем
}
ErrorsOn(); // выключаем ошибки и возвращаем результ
return $text;
}
Функция для получения крилицы из ЧПУ урла (сайт в кодировке win1251).
http://i.imgur.com/qJuuB.jpg
$text = iconv('UTF-8', 'CP1251', rawurldecode($str));
if($err != $ErrorsText) {
Падажжи, ёбана. Это как?
Или $str это ипучий объект, с прописанным __toString (что мало вероятно), или заюзано set_error_handler с ебическим глобальным $ErrorsText (как оно скорее всего и работает).
Если это действительно так, то функция в set_error_handler с глобалами достойна отдельного говнокода.
А то, что ее глобалы используются для определения, сработал ли iconv - это вообще становится шедевром.
Перед тем как пищать про загубленный родной error_handler вашей говно-cms не поленись прочитать описание restore_error_handler();
Оно восстанавливает обработку ошибок не в дефолтную пхп-шную, а в предыдущую. Т.е. в вашу.
Грустно без любимого IDE
Конечно не дает исключений. Большинство стандартных функций не дает исключений.
См. пример:
http://www.php.net/manual/en/function.iconv.php
собачка на функцию работать не будет, но в случае iconv достаточно добавить //ignore (см. пример выше) и нотисов не будет
А FALSE возвращается вообще при совершенно другого рода ошибках.
текст: "❐п❑р✔и✚в♆е♁т♂"
превратится в : "привет"
исчезнут все utf-8 символы которых в принципе нет в CP1251, а также не будет notice выскакивать
вывод в 1251:
h0x91b:Desktop h0x91b$ php test.php
string(6) "привет"
Полная функция:
Только в чем смысл?
сам-то я с трудом плаваю в русскоязычной терминологии