- 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).
guest 09.07.2011 17:15 # +6
Говногость 09.07.2011 18:12 # +3
substr 09.07.2011 18:15 # −4
Мартин 09.07.2011 18:35 # +1
guest 09.07.2011 19:21 # 0
guest 09.07.2011 22:01 # −10
guest 10.07.2011 01:30 # 0
bugmenot 10.07.2011 02:59 # +3
http://i.imgur.com/qJuuB.jpg
Yurik 10.07.2011 13:38 # −1
Lure Of Chaos 10.07.2011 13:26 # +3
yasenhui 09.07.2011 23:26 # +4
$text = iconv('UTF-8', 'CP1251', rawurldecode($str));
if($err != $ErrorsText) {
Падажжи, ёбана. Это как?
Или $str это ипучий объект, с прописанным __toString (что мало вероятно), или заюзано set_error_handler с ебическим глобальным $ErrorsText (как оно скорее всего и работает).
Если это действительно так, то функция в set_error_handler с глобалами достойна отдельного говнокода.
А то, что ее глобалы используются для определения, сработал ли iconv - это вообще становится шедевром.
SmackMyBitchUp 10.07.2011 13:03 # −2
yasenhui 09.07.2011 23:42 # 0
Перед тем как пищать про загубленный родной error_handler вашей говно-cms не поленись прочитать описание restore_error_handler();
Оно восстанавливает обработку ошибок не в дефолтную пхп-шную, а в предыдущую. Т.е. в вашу.
yasenhui 09.07.2011 23:44 # 0
Грустно без любимого IDE
Мартин 10.07.2011 08:40 # 0
yasenhui 10.07.2011 08:59 # +2
Конечно не дает исключений. Большинство стандартных функций не дает исключений.
guest 10.07.2011 09:01 # −3
gegMOPO4 10.07.2011 11:57 # +2
h0x91b 10.07.2011 00:04 # 0
bugmenot 10.07.2011 02:55 # +1
guest 10.07.2011 03:00 # 0
Мартин 10.07.2011 08:40 # 0
yasenhui 10.07.2011 08:23 # +1
См. пример:
http://www.php.net/manual/en/function.iconv.php
h0x91b 10.07.2011 09:20 # 0
yasenhui 10.07.2011 09:28 # +1
Мартин 10.07.2011 10:57 # 0
h0x91b 10.07.2011 13:42 # 0
gegMOPO4 10.07.2011 12:04 # 0
h0x91b 10.07.2011 12:39 # 0
gegMOPO4 10.07.2011 12:57 # 0
Мартин 10.07.2011 08:57 # 0
h0x91b 10.07.2011 09:25 # 0
собачка на функцию работать не будет, но в случае iconv достаточно добавить //ignore (см. пример выше) и нотисов не будет
gegMOPO4 10.07.2011 11:55 # 0
h0x91b 10.07.2011 11:57 # 0
gegMOPO4 10.07.2011 12:21 # 0
А FALSE возвращается вообще при совершенно другого рода ошибках.
h0x91b 10.07.2011 12:45 # 0
текст: "❐п❑р✔и✚в♆е♁т♂"
превратится в : "привет"
исчезнут все utf-8 символы которых в принципе нет в CP1251, а также не будет notice выскакивать
вывод в 1251:
h0x91b:Desktop h0x91b$ php test.php
string(6) "привет"
gegMOPO4 10.07.2011 12:55 # 0
h0x91b 10.07.2011 13:02 # 0
Полная функция:
h0x91b 10.07.2011 13:13 # +1
gegMOPO4 12.07.2011 14:05 # +1
h0x91b 12.07.2011 17:56 # 0
Yurik 10.07.2011 13:40 # +4
eth0 10.07.2011 17:41 # 0
carsten 10.07.2011 15:17 # 0
SmackMyBitchUp 10.07.2011 15:54 # 0
bugmenot 10.07.2011 17:20 # +7
carsten 10.07.2011 17:48 # +3
Yurik 10.07.2011 18:19 # +2
Только в чем смысл?
carsten 10.07.2011 19:13 # 0
сам-то я с трудом плаваю в русскоязычной терминологии
striker 12.07.2011 05:56 # 0
guest8 09.04.2019 11:09 # −999