Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Непонятная функция - помогите разобраться [2]
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
а как тогда быть с модификатором u
что произойдет в системе без utf при указании этого модификатора?
он будет проигнорирован?(ведь и проверить даже негде )
DeepVarvar пишет:
ожидаемые utf-8, а не чёрт-те-что
вот и я думаю
и вообще что-то все-равно не понял
ну не будет в системе utf и что?
буква "а" будет воспринята как 2 других символа(хз каких)
чем это хуже hex?
teddy
Отправлено: 18 Июня, 2013 - 12:29:09
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
DeepVarvar пишет:
Если в $_POST['str'] будет массив - твой скрипт упадет (с зависимости от уровня выводимых ошибок, но тем не менее).
Тоесть? $_POST это как бы и есть array и все нормально отрабатывает Но если вы имели ввиду передачу $_POST-ом что то вроде $arr = array(); то не понимаю зачем оно нужно вообще. При правильной фильтрации данных такой код и не пропустится...
Как понять упадёт? ) Понятие растяжимое, можно подробнее? Какие ошибки могут произойти и почему? И как это лечить если real_escape_string "падает" по неизвестным мне причинам...
P.S: Ни в коем случае не воспринимать данный пост в качестве "спора"... Я лишь хочу получить ответы на свои вопросы и при этом показал как я понимаю данный скрипт... ключевые моменты выделил болдом...
Протестил, вроде ошибок нет вообще. error_reporting включен на полную катушку...
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
LIME пишет:
буква "а" будет воспринята как 2 других символа(хз каких)
чем это хуже hex?
Тем, что работа будет неверной. Например, предположим, что эти два байта будут интерпретированы как буквы p и q (это на самом деле не так, но не важно) - тогда, скажем, условие if(preg_match('/^[а]+$/')) - означающее, что строка должна состоять только из букв "а" кириллицы, будет интерпретирована как if(preg_match('/^[pq]+$/')) - что, согласитесь, совсем не то. И это один из самых "безобидных" примеров. LIME
Вообще, Вы упоминали, что прочли "Джоэл о программировании" - но там есть целая глава, которая в очень наглядной форме поясняет смысл кодировок и представления информации в них. Странно, что возникают такие вопросы.
Кажется, понял, отчего у Вас непонимание. Суть в том, что кириллическое "а" при сохренении будет сохранено как 2 байта, а, скажем \xC0 - как 4 байта - по байту на \, x, C, 0 - потому что в файл оно сохранится ровно так, как записано. Это уже после интерпретатором оно будет разобрано корректно, но храниться оно будет как 4 байта и никак иначе
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
LIME
Отправлено: 18 Июня, 2013 - 12:40:49
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
а разве 2 символа в hex не будут также восприняты как
EuGen пишет:
как буквы p и q (это на самом деле не так, но не важно)
?
EuGen пишет:
Вообще, Вы упоминали, что прочли "Джоэл о программировании" - но там есть целая глава, которая в очень наглядной форме поясняет смысл кодировок
да...не вижу связи между кодировкой и представления тогоже символа в hex (Добавление)
EuGen пишет:
Кажется, понял, отчего у Вас непонимание. Суть в том, что кириллическое "а" при сохренении будет сохранено как 2 байта, а, скажем \xC0 - как 4 байта - по байту на \, x, C, 0 - потому что в файл оно сохранится ровно так, как записано. Это уже после интерпретатором оно будет разобрано корректно, но храниться оно будет как 4 байта и никак иначе
алилуйя))...спасибо большое за разъяснения (Добавление)
всеравно...ведь тогда будут пропущены не кирилические символы
как сказал кто-то из великих чёрт-те-что
чем же это корректнее
интересует как поведет себя регулярка в случае указания кириллицы и отсутствия оной в системе
EuGen
Отправлено: 18 Июня, 2013 - 12:49:15
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
LIME
Верно. Связь с кодировкой - это я все свои комментарии имел ввиду именно сохранение в файл и последующее его прочтение (на уровне ОС+ФС). То есть если в самой ОС нет UTF. В PHP-то она всё равно будет, поэтому
LIME пишет:
а как тогда быть с модификатором u
что произойдет в системе без utf при указании этого модификатора?
- не может быть. Если бы представить, что сам интерпретатор не мог обработать UTF, то тогда бы и в HEX не было бы смысла.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
LIME
Отправлено: 18 Июня, 2013 - 12:53:38
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
снова все запуталось но ладно
осядет - дойдет
DeepVarvar
Отправлено: 18 Июня, 2013 - 13:12:12
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
DeepVarvar ыгым
EuGen
Отправлено: 18 Июня, 2013 - 13:18:32
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DeepVarvar
С примером хорошая идея. Ну, собственно, теперь проделать то же самое для hex-последовательностей и увидеть разницу.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
LIME
Отправлено: 18 Июня, 2013 - 13:21:09
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
кажется уже не надо примера с hexом ))
значит имелось ввиду именно написание в другой кодировке??
я как-то не видел такой возможности действия))
EuGen
Отправлено: 18 Июня, 2013 - 13:24:10
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
LIME
Разумеется, речь только о сохранении и прочтении. А как Вы думали, что от того, что файл не в UTF, интерпретатор почему-то "разучится" работать с UTF?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.