Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как удалить обратные слэши в строке "\u0410\u0411\u0412\u0413"?
 
 автор: Чайчай_выручай   (09.10.2011 в 18:43)   письмо автору
 
 

Здравствуйте!
В php из яваскрипта приходит строка типа "\u0410\u0411\u0412\u0413".
stripslashes не помогает, preg_replace тоже не то, как ни экранируй не получается.
Может были у кого такие проблемы?

  Ответить  
 
 автор: cheops   (09.10.2011 в 19:19)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 18:43)
 

Можно использовать что-то в этом духе
<?php
  
function utf2text($str)
  {
    
$in = array(
            
"\u0430","\u0431","\u0432","\u0433","\u0434",
            
"\u0435","\u0436","\u0437","\u0438","\u0439",
            
"\u043A","\u043B","\u043C","\u043D","\u043E",
            
"\u043F","\u0440","\u0441","\u0442","\u0443",
            
"\u0444","\u0445","\u0446","\u0447","\u0448",
            
"\u0449","\u044A","\u044B","\u044C","\u044D",
            
"\u044E","\u044F","\u0451","\u0410","\u0411",
            
"\u0412","\u0413","\u0414","\u0415","\u0416",
            
"\u0417","\u0418","\u0419","\u041A","\u041B",
            
"\u041C","\u041D","\u041E","\u041F","\u0420",
            
"\u0421","\u0422","\u0423","\u0424","\u0425",
            
"\u0426","\u0427","\u0428","\u0429","\u042A",
            
"\u042B","\u042C","\u042D","\u042E","\u042F",
            
"\u0401"); 
    
$out = array(
            
"а","б","в","г","д","е","ж","з","и","й","к",
            
"л","м","н","о","п","р","с","т","у","ф","х",
            
"ц","ч","ш","щ","ъ","ы","ь","э","ю","я","ё",
            
"А","Б","В","Г","Д","Е","Ж","З","И","Й","К",
            
"Л","М","Н","О","П","Р","С","Т","У","Ф","Х",
            
"Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","Ё"); 
    return 
str_replace($in$out$str); 
  }
  
$str "\u0410\u0411\u0412\u0413";
  echo 
utf2text($str);
?>
PS UTF-8 не поддерживается на уровне ядра PHP. Эту проблему обещали исправить в PHP 6, но с тех времен лет 7 уже прошло...

  Ответить  
 
 автор: Чайчай_выручай   (09.10.2011 в 19:25)   письмо автору
 
   для: cheops   (09.10.2011 в 19:19)
 

Как раз для этой функции я хочу удалить слэши, потому что с ними не работает

  Ответить  
 
 автор: cheops   (09.10.2011 в 19:28)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 19:25)
 

А в чем выражается "не работа"? У меня функция сработала (АБВГ)... у вас в какой кодировке скрипт?

  Ответить  
 
 автор: Чайчай_выручай   (09.10.2011 в 19:33)   письмо автору
 
   для: cheops   (09.10.2011 в 19:28)
 

windows-1251. Ошибка приходит: Delimitr не должно быть буквенно-цифровым или обратный слэш. Ошибка в строке где происходит замена

  Ответить  
 
 автор: cheops   (09.10.2011 в 19:44)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 19:33)
 

А скрипт, который приведен выше у вас срабатывает? Или тоже выдает эту же ошибку?

  Ответить  
 
 автор: Чайчай_выручай   (09.10.2011 в 19:44)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 19:33)
 

preg_replace поменял на str_replace, ошибка не приходит, но когда я обращаюсь к базе данных что бы посмотреть есть ли такое имя, то ответ в любом случае отрицательный хотя оно там есть

  Ответить  
 
 автор: Долохов   (09.10.2011 в 19:45)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 18:43)
 

<?php

function decodeUnicode($s$output 'utf-8')
{
    return 
preg_replace_callback('#\\\\u([a-fA-F0-9]{4})#', function ($m) use ($output) {
        return 
iconv('ucs-2be'$outputpack('H*'$m[1]));
    }, 
$s);
}

echo 
decodeUnicode('\u0410\u0411\u0412\u0413''windows-1251');

  Ответить  
 
 автор: Чайчай_выручай   (09.10.2011 в 19:57)   письмо автору
 
   для: Долохов   (09.10.2011 в 19:45)
 

В функции что то не то с синтаксисом

  Ответить  
 
 автор: Долохов   (09.10.2011 в 20:07)   письмо автору
 
   для: Чайчай_выручай   (09.10.2011 в 19:57)
 

Значит ваша версия PHP устарела.

  Ответить  
 
 автор: Чайчай_выручай   (09.10.2011 в 21:41)   письмо автору
 
   для: Долохов   (09.10.2011 в 20:07)
 

Может устарела. Я не пойму почему функция предложенная cheops-ом не работает. Говорят, что обратные слыши обычным путем не удалить, все перепробовал не получается. Всем спасибо за ответы! пойдем другим путем

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования